From 4e80414b69b15cf94e8ae1d3ddf0d50900728b03 Mon Sep 17 00:00:00 2001 From: day0n Date: Wed, 27 Sep 2023 13:44:02 +0800 Subject: [PATCH 01/68] add ceph module --- piflow-bundle/config.properties | 8 +- .../src/main/resources/icon/ceph/ceph.png | Bin 0 -> 12927 bytes .../scala/cn/piflow/bundle/ceph/Cephget.scala | 112 +++++++++++++++ .../scala/cn/piflow/bundle/ceph/Cephput.scala | 130 ++++++++++++++++++ .../main/scala/cn/piflow/conf/StopGroup.scala | 1 + 5 files changed, 250 insertions(+), 1 deletion(-) create mode 100644 piflow-bundle/src/main/resources/icon/ceph/ceph.png create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephget.scala create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephput.scala diff --git a/piflow-bundle/config.properties b/piflow-bundle/config.properties index 78495b0f..3b98f020 100644 --- a/piflow-bundle/config.properties +++ b/piflow-bundle/config.properties @@ -19,4 +19,10 @@ monitor.throughput=true server.port=8001 #h2db port -h2.port=50001 \ No newline at end of file +h2.port=50001 + +#ceph config +ceph.accessKey=123456 +ceph.secretKey=123456 +ceph.bucket=***** +ceph.domain.ip=xxxxxx(????????okhttp3.HttpUrl??) \ No newline at end of file diff --git a/piflow-bundle/src/main/resources/icon/ceph/ceph.png b/piflow-bundle/src/main/resources/icon/ceph/ceph.png new file mode 100644 index 0000000000000000000000000000000000000000..bd877694ce1e15966eec1a8281733c2bbe997221 GIT binary patch literal 12927 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 Sf%l>mKvq%_TqkZE{C@x<3^#!Q literal 0 HcmV?d00001 diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephget.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephget.scala new file mode 100644 index 00000000..1fb79896 --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephget.scala @@ -0,0 +1,112 @@ +package cn.piflow.bundle.ceph + + +import cn.piflow.conf.ConfigurableStop +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil} +import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} +import cn.piflow.conf.{ConfigurableStop, Port, StopGroup} +import org.apache.spark.sql.SparkSession + +import java.util.Properties +import java.io.{FileInputStream, IOException} + +class Cephget extends ConfigurableStop { + //get config.properties + val config = new Properties() + try { + val configFile = new FileInputStream("config.properties") + config.load(configFile) + configFile.close() + } catch { + case e: IOException => + println(s"Failed to load config.properties file: ${e.getMessage}") + } + + // cephAccessKey = "your_ceph_access_key" + // cephSecretKey = "your_ceph_secret_key" + // cephBucket = "your_ceph_bucket" + // cephEndpoint = "your_ceph_endpoint" // Example: "http://ceph-cluster:7480" + + + val cephAccessKey = config.getProperty("ceph.accessKey") + val cephSecretKey = config.getProperty("ceph.secretKey") + val cephBucket = config.getProperty("ceph.bucket") + val cephEndpoint = config.getProperty("ceph.domain.ip") + + + override val authorEmail: String = "niuzj0@gmail.com" + override val description: String = "Put data into ceph" + override val inportList: List[String] = List(Port.DefaultPort) + override val outportList: List[String] = List(Port.DefaultPort) + + var types: String = _ + + override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + + // Create a Spark session to ceph interface + val spark = SparkSession.builder() + .appName("SparkToCephExample") + .getOrCreate() + + + spark.conf.set("fs.s3a.access.key", cephAccessKey) + spark.conf.set("fs.s3a.secret.key", cephSecretKey) + spark.conf.set("fs.s3a.endpoint", cephEndpoint) + + + if (types=="parquet") { + val parquetDf = spark.read + .option("compression", "gzip") // 压缩算法,可选项包括gzip, snappy, lzo, none + .parquet(s"s3a://$cephBucket@$cephEndpoint") + } + if (types=="csv") { + val df = spark.read + .option("header", true) + .option("inferSchema", true) + .option("delimiter", ",") + .csv(s"s3a://$cephBucket@$cephEndpoint") + } + if (types == "json") { + val df = spark.read + .option("multiline", "true") // 处理多行 JSON + .json(s"s3a://$cephBucket@$cephEndpoint") + } + + // Stop the Spark session when done + spark.stop() + + } + + override def setProperties(map: Map[String, Any]): Unit = { + types = MapUtil.get(map,key="types").asInstanceOf[String] + } + + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + var descriptor: List[PropertyDescriptor] = List() + + val types = new PropertyDescriptor() + .name("types") + .displayName("Types") + .description("The format you want to write is json,csv,parquet") + .defaultValue("csv") + .allowableValues(Set("json", "csv", "parquet")) + .required(true) + .example("csv") + descriptor = types :: descriptor + + descriptor + } + + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/ceph/ceph.png") + } + + override def getGroup(): List[String] ={ + List(StopGroup.CephGroup) + } + + override def initialize(ctx: ProcessContext): Unit = { + + } +} \ No newline at end of file diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephput.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephput.scala new file mode 100644 index 00000000..e0499740 --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephput.scala @@ -0,0 +1,130 @@ +package cn.piflow.bundle.ceph + + +import cn.piflow.conf.ConfigurableStop +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil} +import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} +import cn.piflow.conf.{ConfigurableStop, Port, StopGroup} +import org.apache.spark.sql.SparkSession + +import java.util.Properties +import java.io.{FileInputStream, IOException} + + +class Cephput extends ConfigurableStop { + + //get config.properties + val config = new Properties() + try { + val configFile = new FileInputStream("config.properties") + config.load(configFile) + configFile.close() + } catch { + case e: IOException => + println(s"Failed to load config.properties file: ${e.getMessage}") + } + + // cephAccessKey = "your_ceph_access_key" + // cephSecretKey = "your_ceph_secret_key" + // cephBucket = "your_ceph_bucket" + // cephEndpoint = "your_ceph_endpoint" // Example: "http://ceph-cluster:7480" + + val cephAccessKey = config.getProperty("ceph.accessKey") + val cephSecretKey = config.getProperty("ceph.secretKey") + val cephBucket = config.getProperty("ceph.bucket") + val cephEndpoint = config.getProperty("ceph.domain.ip") + + + override val authorEmail: String = "niuzj0@gmail.com" + override val description: String = "Put data into ceph" + override val inportList: List[String] = List(Port.DefaultPort) + override val outportList: List[String] = List(Port.DefaultPort) + + + var types: String = _ + + + override def perform(in: JobInputStream, out: JobOutputStream, pec:JobContext): Unit = { + + // Create a Spark session + val spark = SparkSession.builder() + .appName("SparkToCephExample") + .getOrCreate() + + + // Create a DataFrame from the data + val df = in.read() + + + + spark.conf.set("fs.s3a.access.key", cephAccessKey) + spark.conf.set("fs.s3a.secret.key", cephSecretKey) + spark.conf.set("fs.s3a.endpoint", cephEndpoint) + + // Write the DataFrame to Ceph + + + if (types=="parquet") { + df.write + .format("parquet") // You can choose the format you prefer (e.g., parquet, ORC, etc.) + .option("header", "true") + .mode("overwrite") // You can use "overwrite" or "append" based on your needs + .save(s"s3a://$cephBucket@$cephEndpoint") + } + if (types=="csv") { + df.write + .format("csv") + .option("header", "true") + .option("delimiter", ",") // CSV文件的分隔符 + .option("quote", "\"") // 引号字符 + .option("escape", "\"") // 转义字符 + .mode("overwrite") // You can use "overwrite" or "append" based on your needs + .save(s"s3a://$cephBucket@$cephEndpoint") + } + + if (types=="json") { + df.write + .format("json") + .option("compression", "gzip") // 压缩算法,可选项包括gzip, snappy, lzo, none + .mode("overwrite") // You can use "overwrite" or "append" based on your needs + .save(s"s3a://$cephBucket@$cephEndpoint") + } + // Stop the Spark session when done + spark.stop() + + } + + override def setProperties(map: Map[String, Any]): Unit ={ + types = MapUtil.get(map,key="types").asInstanceOf[String] + } + + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + var descriptor: List[PropertyDescriptor] = List() + + val types = new PropertyDescriptor() + .name("types") + .displayName("Types") + .description("The format you want to write is json,csv,parquet") + .defaultValue("csv") + .allowableValues(Set("json", "csv", "parquet")) + .required(true) + .example("csv") + descriptor = types :: descriptor + + descriptor + } + + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/ceph/ceph.png") + } + + override def getGroup(): List[String] = { + List(StopGroup.CephGroup) + } + + override def initialize(ctx: ProcessContext): Unit = { + + } + +} diff --git a/piflow-configure/src/main/scala/cn/piflow/conf/StopGroup.scala b/piflow-configure/src/main/scala/cn/piflow/conf/StopGroup.scala index acbbff78..7841a1db 100644 --- a/piflow-configure/src/main/scala/cn/piflow/conf/StopGroup.scala +++ b/piflow-configure/src/main/scala/cn/piflow/conf/StopGroup.scala @@ -34,4 +34,5 @@ object StopGroup { val Alg_ASRGroup = "Algorithms_ASR" val Python = "Python" val Visualization = "Visualization" + val CephGroup="ceph" } From caa0bb78c9b39312a15d032cf9bad378ba86a035 Mon Sep 17 00:00:00 2001 From: leishu-521 <1820145757@qq.com> Date: Thu, 28 Sep 2023 00:11:13 +0800 Subject: [PATCH 02/68] add normalization components --- .../flow/normalization/Discretization.json | 38 ++++ .../normalization/MaxMinNormalization.json | 35 ++++ .../normalization/ScopeNormalization.json | 37 ++++ .../resources/flow/normalization/ZScore.json | 35 ++++ .../DiscretizationNormalization.png | Bin 0 -> 5077 bytes .../normalization/MaxMinNormalization.png | Bin 0 -> 5193 bytes .../icon/normalization/ScopeNormalization.png | Bin 0 -> 5074 bytes .../normalization/ZScoreNormalization.png | Bin 0 -> 5111 bytes .../bundle/normalization/Discretization.scala | 171 +++++++++++++++++ .../normalization/MaxMinNormalization.scala | 180 ++++++++++++++++++ .../normalization/ScopeNormalization.scala | 114 +++++++++++ .../piflow/bundle/normalization/ZScore.scala | 91 +++++++++ .../normalization/DiscretizationTest.scala | 52 +++++ .../MaxMinNormalizationTest.scala | 101 ++++++++++ .../ScopeNormalizationTest.scala | 52 +++++ .../bundle/normalization/ZScoreTest.scala | 52 +++++ 16 files changed, 958 insertions(+) create mode 100644 piflow-bundle/src/main/resources/flow/normalization/Discretization.json create mode 100644 piflow-bundle/src/main/resources/flow/normalization/MaxMinNormalization.json create mode 100644 piflow-bundle/src/main/resources/flow/normalization/ScopeNormalization.json create mode 100644 piflow-bundle/src/main/resources/flow/normalization/ZScore.json create mode 100644 piflow-bundle/src/main/resources/icon/normalization/DiscretizationNormalization.png create mode 100644 piflow-bundle/src/main/resources/icon/normalization/MaxMinNormalization.png create mode 100644 piflow-bundle/src/main/resources/icon/normalization/ScopeNormalization.png create mode 100644 piflow-bundle/src/main/resources/icon/normalization/ZScoreNormalization.png create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/Discretization.scala create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/MaxMinNormalization.scala create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ScopeNormalization.scala create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ZScore.scala create mode 100644 piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/DiscretizationTest.scala create mode 100644 piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/MaxMinNormalizationTest.scala create mode 100644 piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ScopeNormalizationTest.scala create mode 100644 piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ZScoreTest.scala diff --git a/piflow-bundle/src/main/resources/flow/normalization/Discretization.json b/piflow-bundle/src/main/resources/flow/normalization/Discretization.json new file mode 100644 index 00000000..f445a4ff --- /dev/null +++ b/piflow-bundle/src/main/resources/flow/normalization/Discretization.json @@ -0,0 +1,38 @@ +{ + "flow":{ + "name":"test", + "uuid":"1234", + "stops":[ + { + "uuid":"0000", + "name":"SelectHiveQL", + "bundle":"cn.piflow.bundle.hive.SelectHiveQL", + "properties":{ + "hiveQL":"select * from test.clean" + } + }, + { + "uuid":"1111", + "name":"Discretization", + "bundle":"cn.piflow.bundle.normalization.Discretization", + "properties":{ + "inputCol":"pre_normalization", + "outputCol":"finished_normalization", + "method": "EqualWidth", + "numBins": "5", + "k": "4" + } + + } + + ], + "paths":[ + { + "from":"SelectHiveQL", + "outport":"", + "inport":"", + "to":"Discretization" + } + ] + } +} \ No newline at end of file diff --git a/piflow-bundle/src/main/resources/flow/normalization/MaxMinNormalization.json b/piflow-bundle/src/main/resources/flow/normalization/MaxMinNormalization.json new file mode 100644 index 00000000..83a6f085 --- /dev/null +++ b/piflow-bundle/src/main/resources/flow/normalization/MaxMinNormalization.json @@ -0,0 +1,35 @@ +{ + "flow":{ + "name":"test", + "uuid":"1234", + "stops":[ + { + "uuid":"0000", + "name":"SelectHiveQL", + "bundle":"cn.piflow.bundle.hive.SelectHiveQL", + "properties":{ + "hiveQL":"select * from test.clean" + } + }, + { + "uuid":"1111", + "name":"MaxMinNormalization", + "bundle":"cn.piflow.bundle.normalization.MaxMinNormalization", + "properties":{ + "inputCol":"pre_normalization", + "outputCol":"finished_normalization" + } + + } + + ], + "paths":[ + { + "from":"SelectHiveQL", + "outport":"", + "inport":"", + "to":"MaxMinNormalization" + } + ] + } +} \ No newline at end of file diff --git a/piflow-bundle/src/main/resources/flow/normalization/ScopeNormalization.json b/piflow-bundle/src/main/resources/flow/normalization/ScopeNormalization.json new file mode 100644 index 00000000..4d0dac12 --- /dev/null +++ b/piflow-bundle/src/main/resources/flow/normalization/ScopeNormalization.json @@ -0,0 +1,37 @@ +{ + "flow":{ + "name":"test", + "uuid":"1234", + "stops":[ + { + "uuid":"0000", + "name":"SelectHiveQL", + "bundle":"cn.piflow.bundle.hive.SelectHiveQL", + "properties":{ + "hiveQL":"select * from test.clean" + } + }, + { + "uuid":"1111", + "name":"ScopeNormalization", + "bundle":"cn.piflow.bundle.normalization.ScopeNormalization", + "properties":{ + "inputCol":"pre_normalization", + "outputCol":"finished_normalization", + "range": "(0.0, 3.0)" + + } + + } + + ], + "paths":[ + { + "from":"SelectHiveQL", + "outport":"", + "inport":"", + "to":"ScopeNormalization" + } + ] + } +} \ No newline at end of file diff --git a/piflow-bundle/src/main/resources/flow/normalization/ZScore.json b/piflow-bundle/src/main/resources/flow/normalization/ZScore.json new file mode 100644 index 00000000..8a879b81 --- /dev/null +++ b/piflow-bundle/src/main/resources/flow/normalization/ZScore.json @@ -0,0 +1,35 @@ +{ + "flow":{ + "name":"test", + "uuid":"1234", + "stops":[ + { + "uuid":"0000", + "name":"SelectHiveQL", + "bundle":"cn.piflow.bundle.hive.SelectHiveQL", + "properties":{ + "hiveQL":"select * from test.clean" + } + }, + { + "uuid":"1112", + "name":"ZScore", + "bundle":"cn.piflow.bundle.normalization.ZScore", + "properties":{ + "inputCols":"pre_normalization", + "outputCols":"finished_normalization" + } + + } + + ], + "paths":[ + { + "from":"SelectHiveQL", + "outport":"", + "inport":"", + "to":"ZScore" + } + ] + } +} \ No newline at end of file diff --git a/piflow-bundle/src/main/resources/icon/normalization/DiscretizationNormalization.png b/piflow-bundle/src/main/resources/icon/normalization/DiscretizationNormalization.png new file mode 100644 index 0000000000000000000000000000000000000000..7c62193a0326dbbe7a880eeee8c3b9d723cb74fe GIT binary patch literal 5077 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 literal 0 HcmV?d00001 diff --git a/piflow-bundle/src/main/resources/icon/normalization/MaxMinNormalization.png b/piflow-bundle/src/main/resources/icon/normalization/MaxMinNormalization.png new file mode 100644 index 0000000000000000000000000000000000000000..9a9511e8de06700046c3c37dbc88891e814aa82e GIT binary patch literal 5193 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 DMP>u+ literal 0 HcmV?d00001 diff --git a/piflow-bundle/src/main/resources/icon/normalization/ScopeNormalization.png b/piflow-bundle/src/main/resources/icon/normalization/ScopeNormalization.png new file mode 100644 index 0000000000000000000000000000000000000000..0fc1b6aa388bbaece531086f1be6aec2454caa45 GIT binary patch literal 5074 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 literal 0 HcmV?d00001 diff --git a/piflow-bundle/src/main/resources/icon/normalization/ZScoreNormalization.png b/piflow-bundle/src/main/resources/icon/normalization/ZScoreNormalization.png new file mode 100644 index 0000000000000000000000000000000000000000..1c9b85e4ca1d8c1d2f932acfcc47b24ff832371d GIT binary patch literal 5111 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 Z{{t+x(G=JF?}7jT002ovPDHLkV1g$`-#h>S literal 0 HcmV?d00001 diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/Discretization.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/Discretization.scala new file mode 100644 index 00000000..0588d2a6 --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/Discretization.scala @@ -0,0 +1,171 @@ +package cn.piflow.bundle.normalization + +import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} +import cn.piflow.conf._ +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil} +import org.apache.spark.ml.clustering.{KMeans, KMeansModel} +import org.apache.spark.ml.feature.VectorAssembler +import org.apache.spark.ml.feature.Bucketizer +import org.apache.spark.sql.{DataFrame, SparkSession} +import org.apache.spark.ml.feature.QuantileDiscretizer + + +class Discretization extends ConfigurableStop { + + val authorEmail: String = "zljxnu@163.com" + val description: String = "Discretization" + val inportList: List[String] = List(Port.DefaultPort) + val outportList: List[String] = List(Port.DefaultPort) + + var inputCol: String = _ + var outputCol: String = _ + var method: String = _ + var numBins: Int = _ + var k: Int = _ + + def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + val spark = pec.get[SparkSession]() + val df = in.read() + + // 根据用户选择的方法进行相应的离散化 + val discretizedDF = method match { + case "EqualWidth" => equalWidthDiscretization(df, inputCol, outputCol, numBins) + case "EqualFrequency" => equalFrequencyDiscretization(df, inputCol, outputCol, numBins) + case "KMeans" => kMeansDiscretization(df, inputCol, outputCol, k) + case _ => df // 默认情况下不进行任何处理 + } + + out.write(discretizedDF) + } + + // 等宽法离散化 + def equalWidthDiscretization(df: DataFrame, inputCol: String, outputCol: String, numBins: Int): DataFrame = { + val bucketizer = new Bucketizer() + .setInputCol(inputCol) + .setOutputCol(outputCol) +// .setSplits((0 to numBins).map(_.toDouble)) + .setSplits((0 to numBins).map(_.toDouble).toArray) + bucketizer.transform(df) + } + +// // 等频离散化 +// def equalFrequencyDiscretization(df: DataFrame, inputCol: String, outputCol: String, numBins: Int): DataFrame = { +// val discretizer = new QuantileDiscretizer() +// .setInputCol(inputCol) +// .setOutputCol(outputCol) +// .setNumBins(numBins) +// discretizer.fit(df).transform(df) +// } +// +// // 定义一个方法来执行等频离散化 +// def equalFrequencyDiscretization(df: DataFrame, inputCol: String, outputCol: String, numBins: Int ): DataFrame = { +// // 使用QuantileDiscretizer进行等频离散化 +// val discretizer = new QuantileDiscretizer() +// .setInputCol(inputCol) +// .setOutputCol(outputCol) +// .setNumBins(numBins) +// +// val dfNew = discretizer.fit(df).transform(df) +// dfNew +// } + + // 等频离散化 + def equalFrequencyDiscretization(df: DataFrame, inputCol: String, outputCol: String, numBins: Int): DataFrame = { + // 创建一个QuantileDiscretizer实例,用于等频离散化 + val discretizer = new QuantileDiscretizer() + .setInputCol(inputCol) // 设置输入列 + .setOutputCol(outputCol) // 设置输出列 + .setNumBuckets(numBins) // 设置桶的数量 + + // 使用数据来拟合(discretizer.fit)并进行离散化转换(discretizer.transform) + val dfNew = discretizer.fit(df).transform(df) + dfNew // 返回离散化后的DataFrame + } + + // 聚类离散化 + def kMeansDiscretization(df: DataFrame, inputCol: String, outputCol: String, k: Int): DataFrame = { + // 使用KMeans算法将数值列映射到[0, k-1]的整数 + val assembler = new VectorAssembler() + .setInputCols(Array(inputCol)) + .setOutputCol("features") + val vectorizedDF = assembler.transform(df) + + val kmeans = new KMeans() + .setK(k) + .setSeed(1L) + .setFeaturesCol("features") + .setPredictionCol(outputCol) + val model = kmeans.fit(vectorizedDF) + + val clusteredDF = model.transform(vectorizedDF) + clusteredDF.drop("features") + } + + def initialize(ctx: ProcessContext): Unit = {} + + def setProperties(map: Map[String, Any]): Unit = { + inputCol = MapUtil.get(map, "inputCol").asInstanceOf[String] + outputCol = MapUtil.get(map, "outputCol").asInstanceOf[String] + method = MapUtil.get(map, "method").asInstanceOf[String] + numBins = MapUtil.get(map, "numBins").asInstanceOf[String].toInt + k = MapUtil.get(map, "k").asInstanceOf[String].toInt + } + + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + var descriptor: List[PropertyDescriptor] = List() + + val inputColDescriptor = new PropertyDescriptor() + .name("inputCol") + .displayName("Input Column") + .description("The name of the input column to be discretized.") + .defaultValue("") + .required(true) + + val outputColDescriptor = new PropertyDescriptor() + .name("outputCol") + .displayName("Output Column") + .description("The name of the output column to store discretized values.") + .defaultValue("") + .required(true) + + val methodDescriptor = new PropertyDescriptor() + .name("method") + .displayName("Discretization Method") + .description("Choose the discretization method: EqualWidth, EqualFrequency, or KMeans.") + .allowableValues(Set("EqualWidth", "EqualFrequency", "KMeans")) + .defaultValue("EqualWidth") + .required(true) + + val numBinsDescriptor = new PropertyDescriptor() + .name("numBins") + .displayName("Number of Bins") + .description("The number of bins to use for EqualWidth and EqualFrequency methods.") + .defaultValue("10") + .required(false) + + val kDescriptor = new PropertyDescriptor() + .name("k") + .displayName("Number of Clusters (KMeans only)") + .description("The number of clusters to use for the KMeans method.") + .defaultValue("3") + .required(false) + + descriptor = inputColDescriptor :: descriptor + descriptor = outputColDescriptor :: descriptor + descriptor = methodDescriptor :: descriptor + descriptor = numBinsDescriptor :: descriptor + descriptor = kDescriptor :: descriptor + + descriptor + } + + override def getIcon(): Array[Byte] = { + // 返回组件图标 + ImageUtil.getImage("icon/normalization/DiscretizationNormalization.png") + } + + override def getGroup(): List[String] = { + List(StopGroup.NormalizationGroup) + } +} diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/MaxMinNormalization.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/MaxMinNormalization.scala new file mode 100644 index 00000000..0aa9c3cf --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/MaxMinNormalization.scala @@ -0,0 +1,180 @@ +package cn.piflow.bundle.normalization + +import cn.piflow._ +import cn.piflow.conf._ +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil} +import org.apache.spark.sql.{DataFrame, SparkSession} + +class MaxMinNormalization extends ConfigurableStop { + // 作者信息 + val authorEmail: String = "your.email@example.com" + // 组件描述 + val description: String = "最小-最大值标准化" + // 输入端口列表 + val inportList: List[String] = List(Port.DefaultPort) + // 输出端口列表 + val outportList: List[String] = List(Port.DefaultPort) + + // 定义属性:要标准化的列名 + var inputCol: String = _ + + // 定义属性:输出列名 + var outputCol: String = _ + + // 初始化方法 + def initialize(ctx: ProcessContext): Unit = {} + + // 执行方法 + def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + // 获取 SparkSession + val spark = pec.get[SparkSession]() + + // 从输入端口读取数据 + val df = in.read() + + // 计算列的最大值和最小值 + val max = df.agg(Map(inputCol -> "max")).collect()(0)(0).asInstanceOf[Double] + val min = df.agg(Map(inputCol -> "min")).collect()(0)(0).asInstanceOf[Double] + + // 使用公式进行最小-最大值标准化 + val scaledDf: DataFrame = df.withColumn(outputCol, (df(inputCol) - min) / (max - min)) + + // 将标准化后的数据写入输出端口 + out.write(scaledDf) + } + + // 设置属性 + def setProperties(map: Map[String, Any]): Unit = { + inputCol = MapUtil.get(map, "inputCol").asInstanceOf[String] + outputCol = MapUtil.get(map, "outputCol").asInstanceOf[String] + } + + // 获取属性描述 + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + var descriptor: List[PropertyDescriptor] = List() + val inputCol = new PropertyDescriptor() + .name("inputCol") + .displayName("输入列名") + .description("要进行最小-最大值标准化的列名") + .defaultValue("") + .required(true) + + val outputCol = new PropertyDescriptor() + .name("outputCol") + .displayName("Column_Name输出列名") + .description("Column names with numerical data to be scaled 标准化后的列名") + .defaultValue("") + .required(true) + + descriptor = inputCol :: outputCol :: descriptor + descriptor + } + + // 获取组件图标 + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/normalization/MaxMinNormalization.png") + } + + // 获取组件所属的组 + override def getGroup(): List[String] = { + List(StopGroup.NormalizationGroup) + } +} + + +//package cn.piflow.bundle.normalization +// +//import cn.piflow.bundle.util.CleanUtil +//import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} +//import cn.piflow.conf._ +//import cn.piflow.conf.bean.PropertyDescriptor +//import cn.piflow.conf.util.{ImageUtil, MapUtil} +//import org.apache.spark.sql.SparkSession +// +//class MaxMinNormalization extends ConfigurableStop { +// +// // 作者邮箱 +// val authorEmail: String = "zljxnu@163.com" +// // 描述 +// val description: String = "MinMax scaling for numerical data" +// // 输入端口列表 +// val inportList: List[String] = List(Port.DefaultPort) +// // 输出端口列表 +// val outportList: List[String] = List(Port.DefaultPort) +// +// // 需要标准化的列名,从属性中设置 +// var columnName: String = _ +// +// // 执行标准化操作 +// def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { +// val spark = pec.get[SparkSession]() +// val sqlContext = spark.sqlContext +// // 读取输入数据 +// val dfOld = in.read() +// // 将输入数据创建为临时表 +// dfOld.createOrReplaceTempView("data") +// // 解析需要标准化的列名 +// val columnNames = columnName.split(",").toSet +// +// val sqlNewFieldStr = new StringBuilder +// // 针对每个指定的列名,生成标准化的 SQL 代码 +// columnNames.foreach(c => { +// sqlNewFieldStr ++= ",(((" +// sqlNewFieldStr ++= c +// sqlNewFieldStr ++= " - min(" +// sqlNewFieldStr ++= c +// sqlNewFieldStr ++= ")) / (max(" +// sqlNewFieldStr ++= c +// sqlNewFieldStr ++= ") - min(" +// sqlNewFieldStr ++= c +// sqlNewFieldStr ++= "))) as " +// sqlNewFieldStr ++= c +// sqlNewFieldStr ++= "_scaled " +// }) +// +// // 构建最终的 SQL 查询文本 +// val sqlText: String = "select * " + sqlNewFieldStr + " from data" +// +// // 执行 SQL 查询,得到标准化后的 DataFrame +// val dfNew = sqlContext.sql(sqlText) +// dfNew.createOrReplaceTempView("scaled_data") +// +// // 将标准化后的数据写入输出 +// out.write(dfNew) +// } +// +// // 初始化方法 +// def initialize(ctx: ProcessContext): Unit = {} +// +// // 设置属性 +// def setProperties(map: Map[String, Any]): Unit = { +// // 从属性映射中获取需要标准化的列名 +// columnName = MapUtil.get(map, key = "columnName").asInstanceOf[String] +// } +// +// // 定义属性描述符 +// override def getPropertyDescriptor(): List[PropertyDescriptor] = { +// var descriptor: List[PropertyDescriptor] = List() +// val columnNameDesc = new PropertyDescriptor() +// .name("columnName") +// .displayName("Column_Name") +// .description("Column names with numerical data to be scaled (comma-separated)") +// .defaultValue("") +// .required(true) +// .example("feature1,feature2") +// +// descriptor = columnNameDesc :: descriptor +// descriptor +// } +// +// // 获取图标 +// override def getIcon(): Array[Byte] = { +// ImageUtil.getImage("icon/normalization/MaxMinNormalization.png") +// } +// +// // 获取所属组 +// override def getGroup(): List[String] = { +// List(StopGroup.NormalizationGroup) +// } +//} diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ScopeNormalization.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ScopeNormalization.scala new file mode 100644 index 00000000..23c66f76 --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ScopeNormalization.scala @@ -0,0 +1,114 @@ +package cn.piflow.bundle.normalization + +import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} +import cn.piflow.conf._ +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil} +import org.apache.spark.sql.functions._ +import org.apache.spark.sql.{DataFrame, SparkSession} + +class ScopeNormalization extends ConfigurableStop { + + // 组件的作者信息 + val authorEmail: String = "zljxnu@163.com" + // 组件的描述信息 + val description: String = "将数据映射到指定范围内" + // 定义输入端口 + val inportList: List[String] = List(Port.DefaultPort) + // 定义输出端口 + val outportList: List[String] = List(Port.DefaultPort) + + // 定义输入列名称 + var inputCol: String = _ + // 定义输出列名称 + var outputCol: String = _ + // 定义目标范围 [a, b] + var range: (Double, Double) = (0.0, 1.0) + + // 实际的数据处理逻辑 + def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + // 获取SparkSession + val spark = pec.get[SparkSession]() + + // 读取输入数据 + val dfOld = in.read() + + // 使用范围映射公式进行数据处理 + val dfNew = mapToRange(dfOld, inputCol, outputCol, range) + + // 将处理后的数据写出 + out.write(dfNew) + } + + // 初始化方法 + def initialize(ctx: ProcessContext): Unit = {} + + // 设置组件属性 + def setProperties(map: Map[String, Any]): Unit = { + inputCol = MapUtil.get(map, key = "inputCol").asInstanceOf[String] + outputCol = MapUtil.get(map, key = "outputCol").asInstanceOf[String] + val values = MapUtil.get(map, key = "range").asInstanceOf[String].stripPrefix("(").stripSuffix(")").split(",").map(_.toDouble) + range = (values(0), values(1)) + +//// range = MapUtil.get(map, key = "range").asInstanceOf[(Double, Double)] +// //把string解析成元组映射给range +// val jsonString: String = MapUtil.get(map, key = "range").asInstanceOf[String] +// // 移除括号并分割字符串 +// val values = jsonString.stripPrefix("(").stripSuffix(")").split(",").map(_.toDouble) +// // 创建 Scala 元组 +// val range: (Double, Double) = (values(0), values(1)) + + + + } + + // 定义组件的属性描述 + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + var descriptor: List[PropertyDescriptor] = List() + val inputCol = new PropertyDescriptor() + .name("inputCol") + .displayName("Input Column") + .description("要映射的输入列的名称") + .defaultValue("") + .required(true) + .example("input_data") + + val outputCol = new PropertyDescriptor() + .name("outputCol") + .displayName("Output Column") + .description("映射后的输出列的名称") + .defaultValue("") + .required(true) + .example("normalized_data") + + val range = new PropertyDescriptor() + .name("range") + .displayName("Range") + .description("目标范围 [a, b],以元组的形式表示") + .defaultValue("") + .required(true) + .example("(0.0, 1.0)") + + descriptor = inputCol :: outputCol :: range :: descriptor + descriptor + } + + // 定义组件的图标(可选) + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/normalization/ScopeNormalization.png") + } + + // 定义组件所属的分组(可选) + override def getGroup(): List[String] = { + List(StopGroup.NormalizationGroup) + } + + // 实现范围映射的方法 + private def mapToRange(df: DataFrame, inputCol: String, outputCol: String, range: (Double, Double)): DataFrame = { + // 使用Spark SQL的functions库来进行数据处理 + val min = df.agg(Map(inputCol -> "min")).collect()(0)(0).asInstanceOf[Double] + val max = df.agg(Map(inputCol -> "max")).collect()(0)(0).asInstanceOf[Double] + val dfNew = df.withColumn(outputCol, (col(inputCol) - min) / (max - min) * (range._2 - range._1) + range._1) + dfNew + } +} \ No newline at end of file diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ZScore.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ZScore.scala new file mode 100644 index 00000000..883448ef --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ZScore.scala @@ -0,0 +1,91 @@ +package cn.piflow.bundle.normalization + +import cn.piflow.conf._ +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil} +import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} +import org.apache.spark.sql.{DataFrame, SparkSession} +import org.apache.spark.sql.functions._ + +class ZScore extends ConfigurableStop { + + // 作者邮箱 + val authorEmail: String = "zljxnu@163.cn" + // 描述 + val description: String = "对选择的列执行z-score标准化" + // 输入端口 + val inportList: List[String] = List(Port.DefaultPort) + // 输出端口 + val outportList: List[String] = List(Port.DefaultPort) + + // 输入列名称 + var inputCols: String = _ + // 输出列名称 + var outputCols: String = _ + + def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + val spark = pec.get[SparkSession]() + val df = in.read() + + // 将逗号分隔的输入和输出列名称拆分为列表 + val inputColList = inputCols.split(",").map(_.trim) + val outputColList = outputCols.split(",").map(_.trim) + + // 计算均值和标准差 + val stats = inputColList.foldLeft(df) { + case (currentDf, inputCol) => + val mean = currentDf.select(avg(col(inputCol))).first().getDouble(0) + val stdDev = currentDf.select(stddev(col(inputCol))).first().getDouble(0) + // 创建一个新列名:{inputCol}_zscore + val zScoreCol = s"${inputCol}_zscore" + + // 使用公式进行 z-score 标准化 + currentDf.withColumn(zScoreCol, (col(inputCol) - mean) / stdDev) + } + + // 重命名输出列以匹配原始列名称 + val finalDf = inputColList.zip(outputColList).foldLeft(stats) { + case (currentDf, (inputCol, outputCol)) => + currentDf.withColumnRenamed(s"${inputCol}_zscore", outputCol) + } + + out.write(finalDf) + } + + def initialize(ctx: ProcessContext): Unit = {} + + def setProperties(map: Map[String, Any]): Unit = { + inputCols = MapUtil.get(map, key = "inputCols").asInstanceOf[String] + outputCols = MapUtil.get(map, key = "outputCols").asInstanceOf[String] + } + + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + var descriptor: List[PropertyDescriptor] = List() + val inputCols = new PropertyDescriptor() + .name("inputCols") + .displayName("输入列") + .description("要标准化的列,用逗号分隔。") + .defaultValue("") + .required(true) + .example("特征1, 特征2") + + val outputCols = new PropertyDescriptor() + .name("outputCols") + .displayName("输出列") + .description("用于存储标准化值的相应输出列,用逗号分隔。") + .defaultValue("") + .required(true) + .example("标准化特征1, 标准化特征2") + + descriptor = inputCols :: outputCols :: descriptor + descriptor + } + + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/normalization/ZScoreNormalization.png") + } + + override def getGroup(): List[String] = { + List(StopGroup.NormalizationGroup) + } +} diff --git a/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/DiscretizationTest.scala b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/DiscretizationTest.scala new file mode 100644 index 00000000..70574cae --- /dev/null +++ b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/DiscretizationTest.scala @@ -0,0 +1,52 @@ +package cn.piflow.bundle.normalization + +import cn.piflow.Runner +import cn.piflow.conf.bean.FlowBean +import cn.piflow.conf.util.{FileUtil, OptionUtil} +import cn.piflow.util.PropertyUtil +import org.apache.spark.sql.SparkSession +import org.h2.tools.Server +import org.junit.Test + +import scala.util.parsing.json.JSON + +class DiscretizationTest { + + @Test + def DiscretizationFlow(): Unit = { + + //parse flow json + val file = "src/main/resources/flow/normalization/Discretization.json" + val flowJsonStr = FileUtil.fileReader(file) + val map = OptionUtil.getAny(JSON.parseFull(flowJsonStr)).asInstanceOf[Map[String, Any]] + println(map) + + //create flow + val flowBean = FlowBean(map) + val flow = flowBean.constructFlow() + + val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "50001").start() + + //execute flow + val spark = SparkSession.builder() + .master("local[*]") + .appName("DiscretizationTest") + .config("spark.driver.memory", "1g") + .config("spark.executor.memory", "2g") + .config("spark.cores.max", "2") + .config("hive.metastore.uris",PropertyUtil.getPropertyValue("hive.metastore.uris")) + .enableHiveSupport() + .getOrCreate() + + val process = Runner.create() + .bind(classOf[SparkSession].getName, spark) + .bind("checkpoint.path", "") + .bind("debug.path","") + .start(flow); + + process.awaitTermination(); + val pid = process.pid(); + println(pid + "!!!!!!!!!!!!!!!!!!!!!") + spark.close(); + } +} \ No newline at end of file diff --git a/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/MaxMinNormalizationTest.scala b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/MaxMinNormalizationTest.scala new file mode 100644 index 00000000..981e4b4c --- /dev/null +++ b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/MaxMinNormalizationTest.scala @@ -0,0 +1,101 @@ +//package cn.piflow.bundle.normalization +// +//import cn.piflow.Runner +//import cn.piflow.conf.bean.FlowBean +//import cn.piflow.conf.util.{FileUtil, OptionUtil} +//import org.apache.spark.sql.SparkSession +//import org.junit.Test +//import scala.util.parsing.json.JSON +// +//class MaxMinNormalizationTest { +// +// @Test +// def MaxMinNormalizationTest(): Unit = { +// // Parse flow JSON +// val file = "src/main/resources/flow/normalization/MaxMinNormalization.json" +// val flowJsonStr = FileUtil.fileReader(file) +// val map = OptionUtil.getAny(JSON.parseFull(flowJsonStr)).asInstanceOf[Map[String, Any]] +// println(map) +// +// // Create SparkSession +// val spark = SparkSession.builder() +// .master("local[*]") +// .appName("MaxMinNormalizationTest") +// .config("spark.driver.memory", "1g") +// .config("spark.executor.memory", "2g") +// .config("spark.cores.max", "2") +// .getOrCreate() +// +// // Create flow +// val flowBean = FlowBean(map) +// val flow = flowBean.constructFlow() +// +// // Execute flow +// val process = Runner.create() +// .bind(classOf[SparkSession].getName, spark) +// .bind("checkpoint.path", "") +// .bind("debug.path", "") +// .start(flow) +// +// process.awaitTermination() +// val pid = process.pid() +// println(s"Flow execution completed. PID: $pid") +// +// // Close SparkSession +// spark.close() +// } +//} + + +package cn.piflow.bundle.normalization + +import cn.piflow.Runner +import cn.piflow.conf.bean.FlowBean +import cn.piflow.conf.util.{FileUtil, OptionUtil} +import cn.piflow.util.PropertyUtil +import org.apache.spark.sql.SparkSession +import org.h2.tools.Server +import org.junit.Test + +import scala.util.parsing.json.JSON + +class MaxMinNormalizationTest { + + @Test + def MaxMinNormalizationFlow(): Unit = { + + //parse flow json + val file = "src/main/resources/flow/normalization/MaxMinNormalization.json" + val flowJsonStr = FileUtil.fileReader(file) + val map = OptionUtil.getAny(JSON.parseFull(flowJsonStr)).asInstanceOf[Map[String, Any]] + println(map) + + //create flow + val flowBean = FlowBean(map) + val flow = flowBean.constructFlow() + + val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "50001").start() + + //execute flow + val spark = SparkSession.builder() + .master("local[*]") + .appName("MaxMinNormalizationTest") + .config("spark.driver.memory", "1g") + .config("spark.executor.memory", "2g") + .config("spark.cores.max", "2") + .config("hive.metastore.uris",PropertyUtil.getPropertyValue("hive.metastore.uris")) + .enableHiveSupport() + .getOrCreate() + + val process = Runner.create() + .bind(classOf[SparkSession].getName, spark) + .bind("checkpoint.path", "") + .bind("debug.path","") + .start(flow); + + process.awaitTermination(); + val pid = process.pid(); + println(pid + "!!!!!!!!!!!!!!!!!!!!!") + spark.close(); + } +} diff --git a/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ScopeNormalizationTest.scala b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ScopeNormalizationTest.scala new file mode 100644 index 00000000..77d2dcb9 --- /dev/null +++ b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ScopeNormalizationTest.scala @@ -0,0 +1,52 @@ +package cn.piflow.bundle.normalization + +import cn.piflow.Runner +import cn.piflow.conf.bean.FlowBean +import cn.piflow.conf.util.{FileUtil, OptionUtil} +import cn.piflow.util.PropertyUtil +import org.apache.spark.sql.SparkSession +import org.h2.tools.Server +import org.junit.Test + +import scala.util.parsing.json.JSON + +class ScopeNormalizationTest { + + @Test + def ScopeNormalizationFlow(): Unit = { + + //parse flow json + val file = "src/main/resources/flow/normalization/ScopeNormalization.json" + val flowJsonStr = FileUtil.fileReader(file) + val map = OptionUtil.getAny(JSON.parseFull(flowJsonStr)).asInstanceOf[Map[String, Any]] + println(map) + + //create flow + val flowBean = FlowBean(map) + val flow = flowBean.constructFlow() + + val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "50001").start() + + //execute flow + val spark = SparkSession.builder() + .master("local[*]") + .appName("MaxMinNormalizationTest") + .config("spark.driver.memory", "1g") + .config("spark.executor.memory", "2g") + .config("spark.cores.max", "2") + .config("hive.metastore.uris",PropertyUtil.getPropertyValue("hive.metastore.uris")) + .enableHiveSupport() + .getOrCreate() + + val process = Runner.create() + .bind(classOf[SparkSession].getName, spark) + .bind("checkpoint.path", "") + .bind("debug.path","") + .start(flow); + + process.awaitTermination(); + val pid = process.pid(); + println(pid + "!!!!!!!!!!!!!!!!!!!!!") + spark.close(); + } +} diff --git a/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ZScoreTest.scala b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ZScoreTest.scala new file mode 100644 index 00000000..a9d0c7b8 --- /dev/null +++ b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ZScoreTest.scala @@ -0,0 +1,52 @@ +package cn.piflow.bundle.normalization + +import cn.piflow.Runner +import cn.piflow.conf.bean.FlowBean +import cn.piflow.conf.util.{FileUtil, OptionUtil} +import cn.piflow.util.PropertyUtil +import org.apache.spark.sql.SparkSession +import org.h2.tools.Server +import org.junit.Test + +import scala.util.parsing.json.JSON + +class ZScoreTest { + + @Test + def ZScoreFlow(): Unit = { + + //parse flow json + val file = "src/main/resources/flow/normalization/ZScore.json" + val flowJsonStr = FileUtil.fileReader(file) + val map = OptionUtil.getAny(JSON.parseFull(flowJsonStr)).asInstanceOf[Map[String, Any]] + println(map) + + //create flow + val flowBean = FlowBean(map) + val flow = flowBean.constructFlow() + + val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "50001").start() + + //execute flow + val spark = SparkSession.builder() + .master("local[*]") + .appName("ZScoreTest") + .config("spark.driver.memory", "1g") + .config("spark.executor.memory", "2g") + .config("spark.cores.max", "2") + .config("hive.metastore.uris",PropertyUtil.getPropertyValue("hive.metastore.uris")) + .enableHiveSupport() + .getOrCreate() + + val process = Runner.create() + .bind(classOf[SparkSession].getName, spark) + .bind("checkpoint.path", "") + .bind("debug.path","") + .start(flow); + + process.awaitTermination(); + val pid = process.pid(); + println(pid + "!!!!!!!!!!!!!!!!!!!!!") + spark.close(); + } +} \ No newline at end of file From b379f3036dfce51393869e10cf2c658c9c9e6b4d Mon Sep 17 00:00:00 2001 From: or <43975495+yg000@users.noreply.github.com> Date: Thu, 28 Sep 2023 11:18:08 +0800 Subject: [PATCH 03/68] Update README.md --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a3b82035..223958e9 100644 --- a/README.md +++ b/README.md @@ -39,11 +39,10 @@ ![](https://github.com/cas-bigdatalab/piflow/blob/master/doc/architecture.png) ## Requirements * JDK 1.8 -* Scala-2.11.8 +* Scala-2.12.18 * Apache Maven 3.1.0 or newer -* Spark-2.1.0、 Spark-2.2.0、 Spark-2.3.0 -* Hadoop-2.6.0 -* Apache Livy-0.7.1 +* Spark-3.4.0 +* Hadoop-3.3.0 ## Getting Started From c448b1d08619469534353761bc58e7f2823e22a0 Mon Sep 17 00:00:00 2001 From: leishu-521 <1820145757@qq.com> Date: Thu, 28 Sep 2023 15:27:44 +0800 Subject: [PATCH 04/68] add normalization components. --- .../scala/cn/piflow/bundle/normalization/Discretization.scala | 2 +- .../cn/piflow/bundle/normalization/MaxMinNormalization.scala | 4 ++-- .../cn/piflow/bundle/normalization/ScopeNormalization.scala | 2 +- .../main/scala/cn/piflow/bundle/normalization/ZScore.scala | 2 +- .../src/main/scala/cn/piflow/conf/StopGroup.scala | 1 + 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/Discretization.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/Discretization.scala index 0588d2a6..561e0c20 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/Discretization.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/Discretization.scala @@ -14,7 +14,7 @@ import org.apache.spark.ml.feature.QuantileDiscretizer class Discretization extends ConfigurableStop { val authorEmail: String = "zljxnu@163.com" - val description: String = "Discretization" + val description: String = "continuous numerical discretization" val inportList: List[String] = List(Port.DefaultPort) val outportList: List[String] = List(Port.DefaultPort) diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/MaxMinNormalization.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/MaxMinNormalization.scala index 0aa9c3cf..addae659 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/MaxMinNormalization.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/MaxMinNormalization.scala @@ -8,9 +8,9 @@ import org.apache.spark.sql.{DataFrame, SparkSession} class MaxMinNormalization extends ConfigurableStop { // 作者信息 - val authorEmail: String = "your.email@example.com" + val authorEmail: String = "zljxnu@163.com" // 组件描述 - val description: String = "最小-最大值标准化" + val description: String = "maximum and minimum value standardization" // 输入端口列表 val inportList: List[String] = List(Port.DefaultPort) // 输出端口列表 diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ScopeNormalization.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ScopeNormalization.scala index 23c66f76..7d09daa5 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ScopeNormalization.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ScopeNormalization.scala @@ -12,7 +12,7 @@ class ScopeNormalization extends ConfigurableStop { // 组件的作者信息 val authorEmail: String = "zljxnu@163.com" // 组件的描述信息 - val description: String = "将数据映射到指定范围内" + val description: String = "Scope standardization" // 定义输入端口 val inportList: List[String] = List(Port.DefaultPort) // 定义输出端口 diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ZScore.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ZScore.scala index 883448ef..1e79edb4 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ZScore.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/normalization/ZScore.scala @@ -12,7 +12,7 @@ class ZScore extends ConfigurableStop { // 作者邮箱 val authorEmail: String = "zljxnu@163.cn" // 描述 - val description: String = "对选择的列执行z-score标准化" + val description: String = "ZScore standardization" // 输入端口 val inportList: List[String] = List(Port.DefaultPort) // 输出端口 diff --git a/piflow-configure/src/main/scala/cn/piflow/conf/StopGroup.scala b/piflow-configure/src/main/scala/cn/piflow/conf/StopGroup.scala index acbbff78..32256026 100644 --- a/piflow-configure/src/main/scala/cn/piflow/conf/StopGroup.scala +++ b/piflow-configure/src/main/scala/cn/piflow/conf/StopGroup.scala @@ -34,4 +34,5 @@ object StopGroup { val Alg_ASRGroup = "Algorithms_ASR" val Python = "Python" val Visualization = "Visualization" + val NormalizationGroup = "Normalization" } From c572e610f50706ac03182d20c7f800e6155966d0 Mon Sep 17 00:00:00 2001 From: day0n Date: Sat, 30 Sep 2023 21:42:24 +0800 Subject: [PATCH 05/68] add ceph module --- .../src/main/resources/icon/ceph.png | Bin 0 -> 22326 bytes .../cn/piflow/bundle/ceph/CephRead.scala | 132 +++++++++++++++ .../cn/piflow/bundle/ceph/CephWrite.scala | 150 ++++++++++++++++++ .../scala/cn/piflow/bundle/ceph/Cephget.scala | 112 ------------- .../scala/cn/piflow/bundle/ceph/Cephput.scala | 130 --------------- 5 files changed, 282 insertions(+), 242 deletions(-) create mode 100644 piflow-bundle/src/main/resources/icon/ceph.png create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephRead.scala create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephWrite.scala delete mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephget.scala delete mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephput.scala diff --git a/piflow-bundle/src/main/resources/icon/ceph.png b/piflow-bundle/src/main/resources/icon/ceph.png new file mode 100644 index 0000000000000000000000000000000000000000..0ef6b557a55a03284e4c071b1cc2e3797d99266c GIT binary patch literal 22326 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 literal 0 HcmV?d00001 diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephRead.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephRead.scala new file mode 100644 index 00000000..3b0fbd12 --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephRead.scala @@ -0,0 +1,132 @@ +package cn.piflow.bundle.ceph + +import cn.piflow._ +import cn.piflow.conf._ +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil} +import org.apache.spark.sql.{DataFrame, SparkSession} + + +class CephRead extends ConfigurableStop { + + val authorEmail: String = "niuzj@gmqil.com" + val description: String = "Read data from ceph" + val inportList: List[String] = List(Port.DefaultPort) + val outportList: List[String] = List(Port.DefaultPort) + + var cephAccessKey:String = _ + var cephSecretKey:String = _ + var cephBucket:String = _ + var cephEndpoint:String = _ + var types: String = _ + + def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + val spark = pec.get[SparkSession]() + + spark.conf.set("fs.s3a.access.key", cephAccessKey) + spark.conf.set("fs.s3a.secret.key", cephSecretKey) + spark.conf.set("fs.s3a.endpoint", cephEndpoint) + + var df:DataFrame = null + + if (types == "parquet") { + df = spark.read + .option("compression", "gzip") // 压缩算法,可选项包括gzip, snappy, lzo, none + .parquet(s"s3a://$cephBucket@$cephEndpoint") + } + if (types == "csv") { + df = spark.read + .option("header", true) + .option("inferSchema", true) + .option("delimiter", ",") + .csv(s"s3a://$cephBucket@$cephEndpoint") + } + if (types == "json") { + df = spark.read + .option("multiline", "true") // 处理多行 JSON + .json(s"s3a://$cephBucket@$cephEndpoint") + } + + out.write(df) + } + + def initialize(ctx: ProcessContext): Unit = { + + } + + + + override def setProperties(map: Map[String, Any]): Unit = { + cephAccessKey = MapUtil.get(map,"cephAccessKey").asInstanceOf[String] + cephSecretKey = MapUtil.get(map, "cephSecretKey").asInstanceOf[String] + cephBucket = MapUtil.get(map,"cephBucket").asInstanceOf[String] + cephEndpoint = MapUtil.get(map,"cephEndpoint").asInstanceOf[String] + types = MapUtil.get(map,"types").asInstanceOf[String] + } + + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + + var descriptor : List[PropertyDescriptor] = List() + + val cephAccessKey=new PropertyDescriptor() + .name("cephAccessKey") + .displayName("cephAccessKey") + .description("This parameter is of type String and represents the access key used to authenticate with the Ceph storage system.") + .defaultValue("") + .required(true) + .example("") + descriptor = cephAccessKey :: descriptor + + val cephSecretKey=new PropertyDescriptor() + .name("cephSecretKey") + .displayName("cephSecretKey") + .description("This parameter is of type String and represents the secret key used to authenticate with the Ceph storage system") + .defaultValue("") + .required(true) + .example("") + descriptor = cephSecretKey :: descriptor + + val cephBucket=new PropertyDescriptor() + .name("cephBucket") + .displayName("cephBucket") + .description("This parameter is of type String and represents the name of the bucket in the Ceph storage system where the data will be stored/retrieved") + .defaultValue("") + .required(true) + .example("") + descriptor = cephBucket :: descriptor + + + val cephEndpoint = new PropertyDescriptor() + .name("cephEndpoint") + .displayName("cephEndpoint") + .description("This parameter is of type String and represents the endpoint URL of the Ceph storage system. It is used to establish a connection with the Ceph cluster") + .defaultValue("") + .required(true) + .example("http://cephcluster:7480") + .sensitive(true) + descriptor = cephEndpoint :: descriptor + + val types = new PropertyDescriptor() + .name("types") + .displayName("Types") + .description("The format you want to write is json,csv,parquet") + .defaultValue("csv") + .allowableValues(Set("json", "csv", "parquet")) + .required(true) + .example("csv") + descriptor = types :: descriptor + + + descriptor + } + + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/ceph/ceph.png") + } + + override def getGroup(): List[String] = { + List(StopGroup.CephGroup) + } + + +} diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephWrite.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephWrite.scala new file mode 100644 index 00000000..796d3531 --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephWrite.scala @@ -0,0 +1,150 @@ +package cn.piflow.bundle.ceph + +import cn.piflow._ +import cn.piflow.conf._ +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil} +import org.apache.spark.sql.{DataFrame, SparkSession} + + +class CephWrite extends ConfigurableStop { + + val authorEmail: String = "niuzj@gmqil.com" + val description: String = "Read data from ceph" + val inportList: List[String] = List(Port.DefaultPort) + val outportList: List[String] = List(Port.DefaultPort) + + var cephAccessKey:String = _ + var cephSecretKey:String = _ + var cephBucket:String = _ + var cephEndpoint:String = _ + var types: String = _ + var saveMode:String = _ + + def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + // Create a DataFrame from the data + val df = in.read() + + if (types == "parquet") { + df.write + .format("parquet") // You can choose the format you prefer (e.g., parquet, ORC, etc.) + .option("header", "true") + .mode(saveMode) // You can use "overwrite" or "append" based on your needs + .save(s"s3a://$cephBucket@$cephEndpoint") + } + + if (types == "csv") { + df.write + .format("csv") + .option("header", "true") + .option("delimiter", ",") // CSV文件的分隔符 + .option("quote", "\"") // 引号字符 + .option("escape", "\"") // 转义字符 + .mode(saveMode) // You can use "overwrite" or "append" based on your needs + .save(s"s3a://$cephBucket@$cephEndpoint") + } + + if (types == "json") { + df.write + .format("json") + .option("compression", "gzip") // 压缩算法,可选项包括gzip, snappy, lzo, none + .mode(saveMode)// You can use "overwrite" or "append" based on your needs + .save(s"s3a://$cephBucket@$cephEndpoint") + } + + + } + + def initialize(ctx: ProcessContext): Unit = { + + } + + + + override def setProperties(map: Map[String, Any]): Unit = { + cephAccessKey = MapUtil.get(map,"cephAccessKey").asInstanceOf[String] + cephSecretKey = MapUtil.get(map, "cephSecretKey").asInstanceOf[String] + cephBucket = MapUtil.get(map,"cephBucket").asInstanceOf[String] + cephEndpoint = MapUtil.get(map,"cephEndpoint").asInstanceOf[String] + types = MapUtil.get(map,"types").asInstanceOf[String] + saveMode = MapUtil.get(map,"saveMode").asInstanceOf[String] + } + + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + + var descriptor : List[PropertyDescriptor] = List() + + val saveModeOption = Set("append","overwrite","error","ignore") + + val cephAccessKey=new PropertyDescriptor() + .name("cephAccessKey") + .displayName("cephAccessKey") + .description("This parameter is of type String and represents the access key used to authenticate with the Ceph storage system.") + .defaultValue("") + .required(true) + .example("") + descriptor = cephAccessKey :: descriptor + + val cephSecretKey=new PropertyDescriptor() + .name("cephSecretKey") + .displayName("cephSecretKey") + .description("This parameter is of type String and represents the secret key used to authenticate with the Ceph storage system") + .defaultValue("") + .required(true) + .example("") + descriptor = cephSecretKey :: descriptor + + val cephBucket=new PropertyDescriptor() + .name("cephBucket") + .displayName("cephBucket") + .description("This parameter is of type String and represents the name of the bucket in the Ceph storage system where the data will be stored/retrieved") + .defaultValue("") + .required(true) + .example("") + descriptor = cephBucket :: descriptor + + + val cephEndpoint = new PropertyDescriptor() + .name("cephEndpoint") + .displayName("cephEndpoint") + .description("This parameter is of type String and represents the endpoint URL of the Ceph storage system. It is used to establish a connection with the Ceph cluster") + .defaultValue("") + .required(true) + .example("http://cephcluster:7480") + .sensitive(true) + descriptor = cephEndpoint :: descriptor + + val types = new PropertyDescriptor() + .name("types") + .displayName("Types") + .description("The format you want to write is json,csv,parquet") + .defaultValue("csv") + .allowableValues(Set("json", "csv", "parquet")) + .required(true) + .example("csv") + descriptor = types :: descriptor + + val saveMode = new PropertyDescriptor() + .name("saveMode") + .displayName("SaveMode") + .description("The save mode for csv file") + .allowableValues(saveModeOption) + .defaultValue("append") + .required(true) + .example("append") + descriptor = saveMode :: descriptor + + + descriptor + } + + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/ceph/ceph.png") + } + + override def getGroup(): List[String] = { + List(StopGroup.CephGroup) + } + + +} diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephget.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephget.scala deleted file mode 100644 index 1fb79896..00000000 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephget.scala +++ /dev/null @@ -1,112 +0,0 @@ -package cn.piflow.bundle.ceph - - -import cn.piflow.conf.ConfigurableStop -import cn.piflow.conf.bean.PropertyDescriptor -import cn.piflow.conf.util.{ImageUtil, MapUtil} -import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} -import cn.piflow.conf.{ConfigurableStop, Port, StopGroup} -import org.apache.spark.sql.SparkSession - -import java.util.Properties -import java.io.{FileInputStream, IOException} - -class Cephget extends ConfigurableStop { - //get config.properties - val config = new Properties() - try { - val configFile = new FileInputStream("config.properties") - config.load(configFile) - configFile.close() - } catch { - case e: IOException => - println(s"Failed to load config.properties file: ${e.getMessage}") - } - - // cephAccessKey = "your_ceph_access_key" - // cephSecretKey = "your_ceph_secret_key" - // cephBucket = "your_ceph_bucket" - // cephEndpoint = "your_ceph_endpoint" // Example: "http://ceph-cluster:7480" - - - val cephAccessKey = config.getProperty("ceph.accessKey") - val cephSecretKey = config.getProperty("ceph.secretKey") - val cephBucket = config.getProperty("ceph.bucket") - val cephEndpoint = config.getProperty("ceph.domain.ip") - - - override val authorEmail: String = "niuzj0@gmail.com" - override val description: String = "Put data into ceph" - override val inportList: List[String] = List(Port.DefaultPort) - override val outportList: List[String] = List(Port.DefaultPort) - - var types: String = _ - - override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { - - // Create a Spark session to ceph interface - val spark = SparkSession.builder() - .appName("SparkToCephExample") - .getOrCreate() - - - spark.conf.set("fs.s3a.access.key", cephAccessKey) - spark.conf.set("fs.s3a.secret.key", cephSecretKey) - spark.conf.set("fs.s3a.endpoint", cephEndpoint) - - - if (types=="parquet") { - val parquetDf = spark.read - .option("compression", "gzip") // 压缩算法,可选项包括gzip, snappy, lzo, none - .parquet(s"s3a://$cephBucket@$cephEndpoint") - } - if (types=="csv") { - val df = spark.read - .option("header", true) - .option("inferSchema", true) - .option("delimiter", ",") - .csv(s"s3a://$cephBucket@$cephEndpoint") - } - if (types == "json") { - val df = spark.read - .option("multiline", "true") // 处理多行 JSON - .json(s"s3a://$cephBucket@$cephEndpoint") - } - - // Stop the Spark session when done - spark.stop() - - } - - override def setProperties(map: Map[String, Any]): Unit = { - types = MapUtil.get(map,key="types").asInstanceOf[String] - } - - override def getPropertyDescriptor(): List[PropertyDescriptor] = { - var descriptor: List[PropertyDescriptor] = List() - - val types = new PropertyDescriptor() - .name("types") - .displayName("Types") - .description("The format you want to write is json,csv,parquet") - .defaultValue("csv") - .allowableValues(Set("json", "csv", "parquet")) - .required(true) - .example("csv") - descriptor = types :: descriptor - - descriptor - } - - override def getIcon(): Array[Byte] = { - ImageUtil.getImage("icon/ceph/ceph.png") - } - - override def getGroup(): List[String] ={ - List(StopGroup.CephGroup) - } - - override def initialize(ctx: ProcessContext): Unit = { - - } -} \ No newline at end of file diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephput.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephput.scala deleted file mode 100644 index e0499740..00000000 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/Cephput.scala +++ /dev/null @@ -1,130 +0,0 @@ -package cn.piflow.bundle.ceph - - -import cn.piflow.conf.ConfigurableStop -import cn.piflow.conf.bean.PropertyDescriptor -import cn.piflow.conf.util.{ImageUtil, MapUtil} -import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} -import cn.piflow.conf.{ConfigurableStop, Port, StopGroup} -import org.apache.spark.sql.SparkSession - -import java.util.Properties -import java.io.{FileInputStream, IOException} - - -class Cephput extends ConfigurableStop { - - //get config.properties - val config = new Properties() - try { - val configFile = new FileInputStream("config.properties") - config.load(configFile) - configFile.close() - } catch { - case e: IOException => - println(s"Failed to load config.properties file: ${e.getMessage}") - } - - // cephAccessKey = "your_ceph_access_key" - // cephSecretKey = "your_ceph_secret_key" - // cephBucket = "your_ceph_bucket" - // cephEndpoint = "your_ceph_endpoint" // Example: "http://ceph-cluster:7480" - - val cephAccessKey = config.getProperty("ceph.accessKey") - val cephSecretKey = config.getProperty("ceph.secretKey") - val cephBucket = config.getProperty("ceph.bucket") - val cephEndpoint = config.getProperty("ceph.domain.ip") - - - override val authorEmail: String = "niuzj0@gmail.com" - override val description: String = "Put data into ceph" - override val inportList: List[String] = List(Port.DefaultPort) - override val outportList: List[String] = List(Port.DefaultPort) - - - var types: String = _ - - - override def perform(in: JobInputStream, out: JobOutputStream, pec:JobContext): Unit = { - - // Create a Spark session - val spark = SparkSession.builder() - .appName("SparkToCephExample") - .getOrCreate() - - - // Create a DataFrame from the data - val df = in.read() - - - - spark.conf.set("fs.s3a.access.key", cephAccessKey) - spark.conf.set("fs.s3a.secret.key", cephSecretKey) - spark.conf.set("fs.s3a.endpoint", cephEndpoint) - - // Write the DataFrame to Ceph - - - if (types=="parquet") { - df.write - .format("parquet") // You can choose the format you prefer (e.g., parquet, ORC, etc.) - .option("header", "true") - .mode("overwrite") // You can use "overwrite" or "append" based on your needs - .save(s"s3a://$cephBucket@$cephEndpoint") - } - if (types=="csv") { - df.write - .format("csv") - .option("header", "true") - .option("delimiter", ",") // CSV文件的分隔符 - .option("quote", "\"") // 引号字符 - .option("escape", "\"") // 转义字符 - .mode("overwrite") // You can use "overwrite" or "append" based on your needs - .save(s"s3a://$cephBucket@$cephEndpoint") - } - - if (types=="json") { - df.write - .format("json") - .option("compression", "gzip") // 压缩算法,可选项包括gzip, snappy, lzo, none - .mode("overwrite") // You can use "overwrite" or "append" based on your needs - .save(s"s3a://$cephBucket@$cephEndpoint") - } - // Stop the Spark session when done - spark.stop() - - } - - override def setProperties(map: Map[String, Any]): Unit ={ - types = MapUtil.get(map,key="types").asInstanceOf[String] - } - - override def getPropertyDescriptor(): List[PropertyDescriptor] = { - var descriptor: List[PropertyDescriptor] = List() - - val types = new PropertyDescriptor() - .name("types") - .displayName("Types") - .description("The format you want to write is json,csv,parquet") - .defaultValue("csv") - .allowableValues(Set("json", "csv", "parquet")) - .required(true) - .example("csv") - descriptor = types :: descriptor - - descriptor - } - - override def getIcon(): Array[Byte] = { - ImageUtil.getImage("icon/ceph/ceph.png") - } - - override def getGroup(): List[String] = { - List(StopGroup.CephGroup) - } - - override def initialize(ctx: ProcessContext): Unit = { - - } - -} From 9b6bd1258059c342ced52cfee64d70385c00bbef Mon Sep 17 00:00:00 2001 From: or <43975495+yg000@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:23:30 +0800 Subject: [PATCH 06/68] Delete piflow-bundle/src/main/resources/icon/jdbc/tbase.png delete --- .../src/main/resources/icon/jdbc/tbase.png | Bin 27167 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 piflow-bundle/src/main/resources/icon/jdbc/tbase.png diff --git a/piflow-bundle/src/main/resources/icon/jdbc/tbase.png b/piflow-bundle/src/main/resources/icon/jdbc/tbase.png deleted file mode 100644 index 0dc907b87a228e61f97f7edf60448cf6dec436f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27167 zcmeFZ`9IX_`#4^w#c7qD5@mPnWDRYMoraEmDU2msh%lB;Du$s$)7U9%ok+%HNvO zbW7hRaL=C8G0?xgk0uupd-izZ4RkJD3vrwuZcF6Sd#gfQI~x8g|1UA`&suLbVtEyH zoD);S9uhKB4EzpNvjiV$K~fLCSR)vx8-#wZD4^=$PW+1$)k;E3yWs$VJ$tS%VrrTHIenG>3-q7c7b!=epP%+3~pg?^{{boJ% z@x3Od_7*JV)dhw%9agtKJH{fbwa zI4DaXZy2%CM+y+%dhBbr16J$zLsKWA;XB{z4UC3-*vT5!O*~-mZZf9!b-}4SP6Y?P zRiF^3oiXyzT+CD20~v?6JJK?K9qAcsj-@*(d%^G*8Z?_XDdS1SR0}}R`3Gk0x|Ab! zv6oe(yo^M87bBqaIYHFBI}f%zQr75e*@HDipG@R=4*_{!0f0QPc2bq{G@4o}nR*$; z21fT30yc2x-ftsOP69lbEcmgfE6K6{W5HZUmve=svrUY(29s;1c>qJ#2Q=A$@oz6b zi$f6ZX5x6n;zYS{LcvxjIFZTXZs@~%F@&5kCt1=}lqMTEM%szdV?-5eGk4`Tr+?Hb z!(6s}-=1`SZM0aM3tGT`6^uGXZX4OYYkxwn%(m-=5Wl+%4fB+085s4cbL2?&vO~6L z4}gt%QX(@EUmCgdeZHacrP(1c`u;hlR{qjEP8lg%JJRPtIjbCQ2n3rX^2WW8v$mG6 zE3ig=IW|ltT)#?kO#RY0Y~@)!;0%t)i#iHHu!bO@Q`_P`V*{5*<~|oeVsL#wH233^ zZTwXqtrS14%Hn;{+%rH<<0OpAg@PojL*@Yi!Qh^QfQuHI{m2yTb0fpz@l$eX(A=j^ zKxA}_BQm(28?{21MKRA@3+OMId!{X}yFd&Z^g0nTP#2>humI13f|+CvvIb#^6N0;P zg>s~*nbhUTZgdU${Syli*e{FmYn}!J7Ij;jJY)@M7_xTau?5F*_wbeWRk+=;&K<#* z^(VoXyP|;XhkS=3o?!E|#CjKN19#hI<(S9w1UudXBrhU*bfD__pvjW}vqQ3u$Yk!^ zTJfE4)}_46QNWBtIHB7Z0`54ZlmqNwbPwK?a-=Di2a6D$_CN*2Lu~WN!SN)r<=K`m z1rqGv?$8?i>UXOL6q&R2q1kLDHjC;vW$h`uY6Hv-Re)OZDx@n*Y3X%jG5jp;eg%{7 zVkMx_WM!%Ile-aB;d9kLh=MASIj^u=HQ6p@xlY%#v=A5LNR^jy(lH+=7bnP9_P|3lmfAH#O zL&$}Hh2+d%(%ncJ$DS?dshP*EY8OSK=#7H6~coA_$f|BINMy3oaFElhQ#b@B92FU5$J=bf@ILrWM92C zQ;D9Q06Pi6GTaLCd&m!@7=n7&pxL*y0meG$b8UwWUSwD|t+j8fzVu@%T{+;hxHHDn z5=Qb3*ys)XAzPVA0D2PFpSVF_5hohPc^0fjAujE)017twVWb8hju{4&i%pq?pvY(8 zcr2aU`iny_8|-qe(2mznBIJqz7Zhdq5hFk@S~cpR^&G%ti5e1%y)hdca_vaSmSsQ& z=L}%T6Kio5sgng+L+{qYR(&A2-_;RvTcy@wXQX%vYVGS*hj7OsAcvq)7UV*gGklSW(>PE=Rg9Z&ikPF( zV3di?hE6Xkg1{7#_vR8vK1<7QsPJs-UZz#6g$VW3f#mp*Q*MkDrTu~JGbM$eD zq#h_ROq^~lCU8*1to-Wj=iv}$%N77eaTSNU5%t3#Orvp^8=%z=X}za-Krb+hWlqqM zTMa1WTi=GF9&-l^O|=2@V}*pQ92CCrwI|e+cIBGp>rf}7e%P+BPiY7>5bzioX(XAW zg2DwM@{dCs244YioFhILKjn~2>+f)GIROUmI>70Qm{i9cu0WwTKs}c~k3cwIO#w`V zJP&t(kTP%_nvsiUl;(NPt+!l&qFC03?`t10vH!89=&#RXQ0T%R%`aIEFU^ zry$%(znRk;J>E#j>)3VxW8t}197l$1`1oe0*7{og?)F%W;Lgq%V`10M%`}{KcWWw7 zm@>$iX;_}>*nR92wH>rN58!;t5JLDB>+)G(%FVCn=p>2>Xlf4Zx&(1LR7kMaGrsu= z?kw!q3Lham?JPO%O2+RlKH8;7#60;3P#{})^TmMBApgO`*jWA?wP5-g*gDK6l`9TM zD?Tz7#8(WZBpz0s%Ex)e>g7LeRextAGQ1%o2%!6`@itw>X zIx8e3E-rwLV7z`5APr0#JjaGl!bLQ0mv{T+7Et)-r6H74Kta>E`GkZ5!l=9h@z&$Y zQhN|X#d_8gFIoFu@nLzOUi?In-qpe%s2~4bNWz$m-MbX~&pRojpL7 z&NQ^sZ^IRAm84d6OyjyhJpAQ()|1+@-uy{^9UT%dY}1I-qf;F@c1>38oCP2vdjAZ3 z9|Lx~`{QLDopx+UEdBbz@T^3QH@r7uZFscnve^WlkY49F0b~O0TZHh7ebHod18~mW ztTe!E9fM3e9PBt{ zR6LG^JUle-^k~%9cvP2=nd?pT5}*Z4!4623$&w9oX2+ymhn3#ogY^tp<-@6a(d@kFD}wQTe)f5dw}PS)%)?DL8*uu_9>C|Yb4bc5S%)YrH>Z%0xonwbm|W!6;tg9W z%GiW<1#DUCnM>QAU%MbPbw&smO=x(d_Lcqx2q>UNps3>x!0OXuF%qB#y4)Gs>nn(b zA9)q7eVHGu6s!Zf%(R||0Xd$Ew*hjHOQQ_p53#XH=0Nd%VjY=#ZXI?bg$r;Y_dB3O zSm!lB|9BUIjiq61to{b@;_otmtQXkXKxUW;h{XhO9SSP`1cIgk^wvO?tg*E@S1MQs zDQ=p0fGsD89^Q8;ThSlBtaK`Ta6dM-$KaiaQm^U4CF!~EfZbVu??sbMf`YH;BES$# zdg5ru6uP9PM09lW9jQ0$HD{^z|brB4D!=2G>8JQKGM5E$uexrL} zsHOf(6*7h3&;-a(q+Nh~-RZOx zxx#7p$?WDSl;}l(pKWC-PL=6dScQaegTTwx7LPNwHUj6?NiR?lBCz|wpWwaW&_NM4 zi)Vy{YD`)yVqmjh)vE5fU~Wvf`ogl{Np7Zov#M(bjpEY%GQp!X~Uwfvb)~2TTBOe(OtSU#L{GG zDPTNYv!RS<@rFGsFkn`|(3L5?1@^_`vom?*7GNg+7NA-v``r3S^{!hG#<9Y>NfqYr zhR8vm_F4mevc&fG4>k}lTdD!Vg;$5qg#w|Y&2MA4BNcs}(;kID5&EZe-IUs~ueE)i zo#3d;VvdD;tdn6Up!D8KyRCj_b@}E3nC8($1qMX!ASv!38(W&H0)sjj6H)AUQdqry zcc;FaYSw5}JOk+QDP5K{lKPvsItyD;Fo)b{nr?Al`jaR{M`wa6pq9~F3FH+tKlw0# z;wijn-sT8oa&zScut5!vE@<1&Lpin2bRq2+;GOXi<}999v?ylD<9V&O-)P;o+LH@X zdlBgHWGUq~_YdK3^Vmx~g4Fs) z0$KQU?;FIt9TZz#mme-ye|7?xyp{7OUN9>bi4!c;10F_Pb8p>5pRFWWR{&aE_q~Ft zU6Cn7x`QmsKvQ#X`&1tYhOCck18$9zhk(T$i&?1OU0@vzU+%-}W9a3TYu&Sh0FP7< zz!T$>qHH8V)&}grXDrK2lwyd(e!W99UB7wp!=MU#w^|Zu^NyLwyh8cYLy0Jtb2ChHB#5X)iK+pzd<8N3B2-bsr(%|> z!^uZtpX$z0`(j5!0siu;2)TIr;6hX(z`q3wS?vToewSXoj$hCWW%M4A-U}irfCC=N zvCPe9MJiNZAMMDwuv?YrZE0wjMNomTc#KQYT@I)i7K54ZBeM%fxM)#|Gch2m{UU6}K6qyE|2dewJ4atAUc?2dDta<*Q&86b#23NapnSzQ+-pE#&-P zrbO*5ciuDth_-^5I2QpCSvqa6v=e%1^_NPGe>SjwMBmjnGI;SA@;nuquW!TGcfL1_ zc7HT)7k~=D%ww)XDKbQCAQv~u`)b#lF6@ZQ$V__w3#P32B6O-f5xD#-)e=Z>c!&YT zAf*$P5iJM@r4ih~>_tCkgBZWM4KG_qQt-cPf%+8@^D$fa6o3M)8BMx^Dw_O>DszW=KEzN48ef zj;4$P!WODzzaPTXN_T$W=*U1K#y3E;FC}wsa{Zq}XF_$Sf_w~= zYP>8tj{XXgi)`-nfbgB|g{aaB0RRP*V5Fg>xeH)9)wSvlO%roe!E%9Fe@nIhPog$* z8nL@RD4aksi~SJ2;UJk!!X}%GgEFj*Pw4e?Wg?d>ZyIJps`wcTUi^^Ifjl^ufcphf(aWb5hR;jIPsoo(tW|#QbvA_*dWDgc zhf+=i_KvwJ^}!7=b&^BwW8OQERut+cc{fV5s1Sagqk)MVAV+cZQSM&>f8?sA{T!lxW85tmQ9tvTJ^CPS zH%p(M5w*E86Qym&|LFQP|8{a@2IL$0H)MQ}vO8P#_3cIV#41bsT}FF-4@3-5aWjJy z3sAkZLPM0;qE&P8&o;sVw&nQv9tbtmsLHs_D89sRBG&^o+SUalM%fDJp5=-nzdaLh z<#0wX>#g2;#;TtJ)%AzIUJCVR?=W4#rB&&>MEZ}VMO+9tceqTuL~pO|UiPMiptOwneNeq|_4x-i zm{jz%18sb+OM<>#j(+PD)~nmISy?X|owb}gSXAH9uZMI9lTJK8H=4tq>LY=)LH}!+ zCW#zhX*#kQ{%5-nA{Ow3HhFS|Y>4WR%qLnl81J!jR=o%Q%(!aH%_^4r6#bD9orT-L@28)LEw@goDPv7g%iWRoADIj! zIdYHB&ZhtqG`UQ)ay)m94<-CmlxZx?Po4>;} zZ`q(56^S|(hG2bDqIXb(8=n!hmw)t$`AzA$&Km#Wg}uhZI)4bT)^0a8=7MuN<2@~n zfsK~9Ns2#`PTMb?pvo_ycCrB|K zO2wTg4M%e1$&J?p?ITrCZ@gW4KB}Y6#rhyupCDU_ka4*psId#Eto-tuI>9rC!t*9vt^M;o=A~sA+qyf zl}AUNFy*K_$AQwBESwLf&IPqF5Px|RpBko}Be72_cILd{=%hIv_bX(O*p1w-Iu5;d z6~9VBXRHTTg`q{i$hU<%i6fw8^Z4DlbMfTB37AbNrtswNL zv-A@T3$VI^zD_pH#PO*v%*&_GuIQZo(9)}VzjyS>Nfe7LjDPip*0G_o%N3~Ausc%i zGg$kRs{Y~h47=k9xwiNv1u4LkT>BzT9$5F~^SA{)l{{CHP41=Ow5pAjFNkW)yMSz7 zk=LgT9XHOo^+^Mn_)7d~PJNwC&Fs}aJ*>J*t`k;AZwFa$jutwSGf_ex_oX6G1sV2& zEjApC<3U7)&jH5*?5Q8>3Qi9c0Q?s}zAnaKmKFmlG^iq}S!WPRy$)V6DdkxLavYi` z5GKY29TiE3TAo88d5k`_V0b47!M$Hw%`LaSmWEf!UoX@(f#J;_PetZ84I`vvlvpKt58ov0-DKtCgB;Up}uVV^o z#8{-dS>~NVzz0ue;S@wP-hQO=-p}|d55FszZVmwDQqZlu|eXJ zWENcTZSM(I7wIOE0`?{(Sp#UhQTI>dq>!Axgub7_J@93WFvI85b1&nfO#rpATcfU~ z=wfm@%8RSLBl(!Q6xJpURDBB_plUn_XzJEU30Gw(hpwt{bVsH-4Q19$Ur-mW)Bm(j zYUb?W(P4#jtD8*=8{yPvZvtz25@QsX&B3{$Ybq$x@%AFc&*V{B%v8n`NItO{MZlFb zphKe5d{~l1VVAC@biTvAwB}i%p}#(H5EJ-~Q2ocS1y~Q5r-6d^VBEL6J^6f&^;q&v z`Ug9yutEnb|p0~a28sD4Y0#z|Au;^x~R0Q z6;~zhrJNl2bdmUo*oE|UAGg8Ft}XC&?4+$;a2i_&af+)+lhwtwT_XIB8O5kvfL3b+ zf#@H>xND5#QxjD$$hn=@68=`?AD!xRBuP}<@KMNn;szn1Cg~n-j!>*#h#Gx9civMJ z&;(GR_#Z1mxK>Vc70NOHo#U`x0!kaBmQk!;qu%HTJtYe*sq8|o%~8d^8P}MfLuj_ zs6+mPKjT+JWlDsMjE^Sf0y|;yzk#e|OKgj$f3(&k-o4buFDvLR`H$>^isrD0L*t%Q zejof({E7O`%(VNs6+**d5|EdCYs)i`oq2vGDLBmelmaWOuxUqgURd-geLfj%V1NGf z6Rb0(G_O?%Bj6lta+>6rej7^s0g+KYCZYZxNv3YNv`#XR z&5Yr!?XpGh47wiknUVZo-qrfDCRy9`>rMcs_S_Uy?t(O8-Xyfp(uCYBS3mHk>eBkxjQYaSXz#}6 zd;2IAYhd5i>>^y3xOzI^$kHrFc5j5dyW2DVn{ItNk5SwwlV+9sVlxIzEV8ULiv zGxRiXMl3p+O>Zsis!WO73Pr`utwmp9I`=3rekf&EC}*6CFVz$+6+Q3Y;)c0d^K5!p z7M3CSx}qGN-3eO@ds&Z9PknMuQMVM$OMa0B498b+B_ItMO=mj`$IMLJW30EBT-RMMbORMu6p<8Az4lf-h~J6H3GGoTi3h22O33mK<5YlUL`6C#6w zK(Uh#L&5B!psLVxZc<#vKE?>0ZxI%7ST$XUWhQ9&BI`lKAwD0O2;I_VH|pB;+Y1y4 zq$i2lS^~uirCK&VL55`0YdF66Zz)`6wZr`0IsI-U^bB%EO7ruXc{Mh2uWMA1z89Y- zsz3s-iRV#2nTPCvQH(5d@3zK);9a6uvg23}9=+u@nd}@D=yHp0t*SAlCWcF^tJ2ls8VxsEKP&O{bjX?egfgq46v#}iT;Csn!=yNiq`5}M#WD%E} z6oteC`8m|n1+W3%&*)(>*|44*LIX0X+vWBG9dK(LTrES~`cd2{67hST!!15HU#z#3 z9){c@O!F~DTZTg7_}jYTi`2fU$22Fi%Sp{;v8)SqE0Oj+g%~c3AyOE?Hp zeG~Lu%Xd$VXh`89&FqvIOCdcDvY>R@QAAD2ujw9=u1;@JEMs)+KUUs>7Dg8u7+jtx)f3K ztF0M9D9-w+b%&pU+-UDXSe`92sMPw3}9JhBO2G38N} zrKr%faz=iAMNaL~^*ywhMlC10quKjU4c*D8dgheA-bxu23Sw_cRx2$%Qoya-$)6*m z?ZUroD}8VL?Wp|e+zSpTTt5>UiaB}HJ9Hve#H|I==(nFX|hWvHAulxnPyS}AEQauJVCI92zivq&06sUVksFn8AnyNjd5Ki9n-1UTj)Y7x(tJO+uQVAU$$Hdz zv_rc-Q_eqIFzBIqKaq1)pkvg3sCmbdBI_?3A5j_uUn$F}aaTi9)d(%nPN4V!WeXgG z=}SY`OvuTF?;9Vu4t*-on}(&G;z?apZUr( z6Xmott2`ykwDh7vFeo4PdX&Tmqti~*kk60Tk(jV4Bk%hDj<7-1dx6Uo_9j=;LR!Hg zC|Y1Pds!CchrCVAigi`;FRPF>vWuH(-`43wY8$;Biw$_zmr-vE_Av9V?+xAKAnTtA zUoyQjvf3~nR;=oum9||H5av9XAfK$=-sWH2Qt`(GYK|AcM+E<$2#(n16fDFJZZ>2$ zjb}9Ky$35e5BTxH9jnVU?Q+9Cvf#B-W|$|!a(!1Xx8nON))RKa&5FB`6=?INNZD5| zTIei+zHM=ENnhh9SZ4yobx_wCu+f8{G(X~bzI z6F+J|uSSGn<-?Gkh1~U8PgECG-J|mObNVm9?+3N}Znh3da2IwE^g4{1i1YeezdQuMQ>&%M5w0Y-k+J{8pLo{Mr0(_vxU8FPE zGgMI7oZ*dP5oi~$;bG+)uM%X;vt#wsek0MmFFejeEeuBw+qc%WRHX4YDvyIc*w$}Q z&l;%pqMWmqY_m3{y8^@P`brN3CJ3RDiHgU3c(@+x z)`HKJSa&(dDjsNmK^=Bq(2PQ+{q!K3;y03pMSYLMoH|Od4v%Q)dqm6(op%fwW-B8h z-BcDqRoh>n>er{Q9EP4Y*0VJkkGj<4 z7GFJ?oyo1oPQ2DjD<>_&SIpCSRB{BA%G(>e&NMZ(qBC(RHpA7sVo<6Dbt?`mVO%*e z`rB3N&*cWc6|l>7zP{EFpu^{PdtlMCOyt^r@05_IV<9>QSU)v&H@B>um_wm7E6_hw z{x*z(08!dT_~Pddi0;0zy0fB@PKBF&R$lXqK`rDZ3E4!m_->d(ys??Ll&+j8ac4p` zB%EsdJ|5pLM^{qvOKiORCxj5QQ{`tMbi4dA6QOmSl6_I-#~w zNUr5U;yxWiCEU(BudWkT6q(rgwiZGruCvevQtQ0ulBK;KYDq~P!WWHO21?Am9yOU{ z2^9#!UQVK1t{FMoplE@lPTsvR&u<43&G<7oYbQgUT03uHa4D26IwJ@2u>nxqA{MBt z@SWg~Y)R#!zJy_3+DIr_h^)LqHbG=#B_@i9OUHUnOx1fwozil=Yn?L5uj2Cb102Zr zzs1}_&F%_tt6X^9ro%_OY`c765-$@_vJO^L)Jc04kPW$EN?GkDi$B29Ihr`qDH1b0x3uH{b~h#|^_6^b(dE2As7u z%tjt!p|JqR;TT*wq>=Ba}K3C|cPxBc0pv4Unyq$Q}OXMGf+iG6RKPUHE z^W=j;Uv*VMG3=Y`5C;E=O0zkNn-h~fbQY&$0Mw<5b zlZ~HUNLSN)jdZ)i{}6Qbx;=gZV!|@lgOk;tIDiqp^p~`Ehi4OxSACkuLuhXH-sM%6 z*%Esv5^U?N@(X5S(mDe*KX!IUbLf#k&kA-SnXFKb+B{nMsII9Q`nma1 z#e9`ZT2Sc5wV`HrM$2>0vBEBoInTutvk=ld94W$0<}(g3s(69* z%yH+tA0b>~5eFcxy{}XMtOS`Nt++%ceEb2(B^}gYZG^ukUwW`YMa;6JDBJw=PXFr>2V!Ho=V1zQM=(3u%m#GW0fZ zkl=6s$*g*5$w}yq`V z9$ieHHj_Y7s-fNlh=x2)>iwUcH}h98smVM%-~E%OMZMk|3>gc!n$|^oqF6X?Il@*2 zL|$_g?W~Sbu zXSL9ir?6)YH)xDgqHecAqctv2Vc?t;WSuxcQrP)KwDGya)BRKLqgz|d&AX|EIm?QF zt)1zucTDW;V5NVCXf^wPQmbxp1PY}(-E`n8`gWYojl8V`6$Lb{=1iDiwX(ABraEh0 z7^@3+e*i%_l72doy=j{XSx1xA@k zXTWP&%J@k*LQpteD=|5QmjvEwoDTv`=1?~LEK!1pdmOKChKer$WozM$J-s-WM*XzF zi9dP1d-Jf$sUHCtu(KM!!}!=_3V+QC?PiCTgLbh0sjj?;MgJ+GR=j=0wJ9b^(VgPO zmoV>qP00PmwS`Mm-8yMAx(w@#ea%l1M zVrYyy*>T}mzbrQ3x}8Gu=ePZl=Z&~W9q3t!?9t{-5KQ$IRg&n4J(-ke!&5K&>iSWN z|MmP(godrjIF@9}9SuWT4S1SDYt7rf03w3fiNTm&iI*P^ zJZ)}4QB`5tHsi-OpKR0hNSTPz6oPLKZ^29^;ac9KICQHz@{eW4SWJD<=$r(cE&wi2 zmEhV?v#$YW4x_r+V&R%WNWTMPT#mwxGW1a_wt;*RgkBqtKEGS(ya%%9FXZXkRCwpH zn&Nhui~qj+yxIg^A8WmcZC*qLe0;#O@*$&csy68wJzFaIo^c`x)GUA0#VmR^R%T*X>z8#EF4{-CG8*+225JRKj!i4jzEGne zbYb8Wj@UGjk=?I5I|Vf-MfzWihdK2He7h_HRAMLOi`uKs__84Bm!DY?r8rd}lBjw1>2r;#x1X+cJ+-E-ZY_yQ^xlTke?x-e{_KB9 z%rh73CeFe3BFDP-L&C4Ea#*XD$UFeRB?)&Yn-EJ+J?ZVxUAL|k`g}zA$9Z4K{*&!1 zNGSSIVS^fV@}-@AXM_U-wG^Ww*T)uMjNmhI3>xFKj9HGhgAZHSGurR;g9y3L%w}FF zj946a46anp&4r>`bJkD)7Jfrp0jI$5NlfPUJ(K6rs+~d8_BV}#C$$@qT~QU$5ve;8 z$S1X+lpX}X=myjuT;F4+TI%)BqfR}piaikQw^G@w*Qrt2d1TF!quk87MUJ=-KwyVc z?x>qfk9{iY?8~);l+WDZA8$4Amp)SA0ag?hU3(TBK#Qet%{C|iP6>{ zpPA+5h})`JRbHeR{r;cZ7*CyJzQsBN=u@6IH}MnbnL2-2YjIdeV{?+(mM%H(n zxAgTBNzbtmj-0a$@2*JB`uW%eAx0w1@Cdou7@qsw+cV@&|){|GUBBXT8NZB@>%nbdN~4KcdRJFy`;z%KY|$|E8~ZYqRJgPZ-8 zgT3k>=;k{14kcM8?X*?sJn=imE7GFN&{m^^FHH@W`?{>r&jx$z#LNZK$Uc(eU!nir zPda8w;~vL)i;?(_>+I!cJw!d&Hk~xwf`!Dkrp4T?gdklPjB~|&zPGaoW)(SDIP^rc@Xc~&!Tm-PP5s2V z!&7hPtGPL5E;wq3KrsI8wCTBVco8q3K)s_{7U^fFJ-onm4cCJQ$p<@X`#tS1PpUn} z=L*}5R3ZxE8*~@ROd5SmPE!u)sN`9n�P-?Mx7m=rJ(t7ca-d9~q9~$}$_iNrn{k;X|^O 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 LE91wfoo@Uerpcs; From b899ecf44613ee7db0280d84e4389c4304b22f4b Mon Sep 17 00:00:00 2001 From: or <43975495+yg000@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:23:52 +0800 Subject: [PATCH 07/68] Add files via upload add tbase png --- .../src/main/resources/icon/jdbc/Tbase.png | Bin 0 -> 16473 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 piflow-bundle/src/main/resources/icon/jdbc/Tbase.png diff --git a/piflow-bundle/src/main/resources/icon/jdbc/Tbase.png b/piflow-bundle/src/main/resources/icon/jdbc/Tbase.png new file mode 100644 index 0000000000000000000000000000000000000000..671477c16056e588070843a4da4c266e4a6c8e0c GIT binary patch literal 16473 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 KSgc?X{C@yo2NzTT literal 0 HcmV?d00001 From 92ecf1e32f923aba1dc047e5f5a25c8f7245ffa8 Mon Sep 17 00:00:00 2001 From: or <43975495+yg000@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:25:30 +0800 Subject: [PATCH 08/68] Add files via upload add tbase png --- .../src/main/resources/icon/jdbc/tbase.png | Bin 0 -> 16473 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 piflow-bundle/src/main/resources/icon/jdbc/tbase.png diff --git a/piflow-bundle/src/main/resources/icon/jdbc/tbase.png b/piflow-bundle/src/main/resources/icon/jdbc/tbase.png new file mode 100644 index 0000000000000000000000000000000000000000..671477c16056e588070843a4da4c266e4a6c8e0c GIT binary patch literal 16473 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 KSgc?X{C@yo2NzTT literal 0 HcmV?d00001 From 02b08dcc56276a077f830cf35115de23f7e9f415 Mon Sep 17 00:00:00 2001 From: or <43975495+yg000@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:26:34 +0800 Subject: [PATCH 09/68] Delete piflow-bundle/src/main/resources/icon/jdbc/Tbase.png --- .../src/main/resources/icon/jdbc/Tbase.png | Bin 16473 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 piflow-bundle/src/main/resources/icon/jdbc/Tbase.png diff --git a/piflow-bundle/src/main/resources/icon/jdbc/Tbase.png b/piflow-bundle/src/main/resources/icon/jdbc/Tbase.png deleted file mode 100644 index 671477c16056e588070843a4da4c266e4a6c8e0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16473 zcmY*>2RzjOAOG1xAsm%d%7`@za5T}Fv0pZ9o;=j-`;zI&nh@ZL$fvvd#$2WRn7~4>0 z601sCh9p$k$Z&aa=nluO=ou=Gx~)e~JNtdF(OeKX{VgLZ;?t>_+?T)YQHk<4kG4v` znrbL>DR$kV_Z(FDSX{2#p9{CNeSTC!qbgj-1zGJo* z5VNxnIr+lcYo;K#J)9J{=7&qOJe*JnT?y&@&2{m>mP1Trslm_Odu6ZU7jxfBJ`vN8 zhkvFM*5(m46U@g?%%xD&ntFIX4MvQM%$uduoch$k9cMC}R0Ci7Jsiy2;*IxmEBk7V zV8YsGPin*Pzt8>XOQCmGPSUQF6mWG$c%N%}_3Ch?d4*z&on7Qd%kvA7MK^(H7*7pYWLZphi*Zj zgSqiS-nYC(pecTG9rhNKChrxEi;kcsS;L>unEk96-hFjZ`KVwXL>o|Y()a5uYjNv7-3 zrN7@zFBfJgEk(Mk;wV?sK7duaHd4O~)cDW59+2b(7t^s_k^e0{#nTc+1sM&Z{*E*4 zw?l_18qX+M(~tkTAj7&;CD*=XDLB(PdNy@`ZzFNMrGebzD>m`?Y#+iHN+C|fLd7!h zekY;{XX5`mY7EMRAPg3L0j$q31*zUrYHRp!DOXkGJ?elZ9oo@rkRWVj>^0-8&uH z;K;B@-s9o!TxudOMQ(&?WB(q}MogB_2KV8zz-pbwwf19!uIPM24ue?uvp57f0Q^{qmM-XQ=0+u&=r`AV}F0FJ2R~?^BCa1;R9?z#q7rL|RrqhPtWh2;bnD;K+ z2Z~L3j!b^>cRTcxAET%&h%;?J2f-RYM>dTGwPL&NfA*n$m~G0AEwc!#ONMSvW=g>c zScrT64&Z#kC?Fq1G9V*ih4q4@;=bh+Uw`tP`Qo>_E9+syF3^doiy z%yMaOmG9B&6Suy*{YK3Hk71+_y^(GL`@x?H7VOOOD<}n-j9>+?k2#!InY^{|Kldm~ z8YF{Sv=Sw76z|iGFpv1FP#5aiBYPUsSY(9dRa@ z_;myifJG9<(2HUM6yDy%4_)$%damr+w?R^WjyN2V`b8d#a zp_bc;5LNvsWeV^`Bogf^jrIcm4i^(^LIG=vh1L&c0xuFkCMQ%*772$Td%+Knc&GAx zp1PLKFRN;rN2Cwi-dyvW?V8`~{?9Jz)#U#NiO+Ro{eFtXCF2*NM(i3|!z_4(-@p<4z%vfZq2*cgJISm*siqcMwn;3~or$}F?X(3MIuluL18f6c304Rk|7TDg-Ch-Ncriy?+k2Gqnwz59 zb6$0;GOutN>1?0=&82|VLZ!MG{}Rf5k_~E+7eJi32N_pHVhm3A5Kw(99YT{gb4ZH6 zeW_h^p6&94H&3u`o}k)=RMHniP=~Wk%Y=*8qY@;S+mR`_fRdM%)61QsMoYnh zkkuZ(JBL=`dM?Dp+G1ckdW@IZwOB2!tnPZ$nN}Cq_2UeHR|;sbDt#RtRj4Aeb>;H( z-~A9TziS=_;x{mwSCGN#zK1JysQuQ~5=Ug=nXO8Er4!L9aCs#E`Rmc3ZH`|i#lEaV zH37TWT(u%LxEtrxm2=NoIFH8FDx9xFh@f1aJu6c8AhsAks#_d7lOV>B*NWY=hx^Ze#Qnf#^=wU|L94% zB}l5{;pR@CXP~C|*3ckJdi#(U zz{G($RSIT^{?p5eBGFU*bi2Eaug1nq0}0^*nyM(OTovL> zQYFI7dSq0BQ1-v9q&AL~dNmngpX6%FKIUAtYIP&=LFmfvYJl8^Uzrs(Gg}^E;Y9C7 zrWrokwxUay9A?RpKH}uCVfyv~FLy`2`hoSyPj9nd?2=X-H?E&9itRs6ZGW(u1@<7^ zEt*rEIzCrlr3)nc1F_ zLDQ`~PnEvod-Yt_zx}Rmlr{w{1vglY+#ni8j0(<5Z3o=RM!IjWT9s{Pr!K|)L!G*^ zFBPf{PzWbteR=t1YaK$bz;!Dn<>5POxCvW&Tkg*D6fng$v`~|nqobo*W)b@nS62uT z>$p*VS||j(0#dprbdo3`NA7C4c`;(Zo4IK8ZuZR-!8 z)L)yvc?ZSC8Ycb|>98)h+JVA^#@Q!f`?Vf#(T3e^eG@G2{+#Jx6@Q@P7RX z(@_aIfN_hH7W5c1Tqky^R&8;H(b(?fFyIkL7}UZGY7Wzau;QXgv(rS)s&5_9=!;M5^x*s3Zj z(p?s2<`@BjXVm_FKvoj0aV3Me1ii`6?fZa-47w}DvE_cY0vSl7M!4~dJLJTd!`g3- zbs~wszU``%Q5a2js3nwoZ8~IG@edsCs!hJS{mi@aGuXU^;=yaxvG>ne&u#jaBJ090 zfkf9AdrMMMR2Qp=n47t;I4@9e)_2udR6xjkm-fyOSt^~=z8`HOwtIOa``W>pT=-ls zSNyd?_c8Cau+H0c0wJ%S8i*LkMtF=aVb_P>*HRmtwhso5@JNO$GT%r8tU{|nDmr8E zW8%iC^mW})bnE`<$$d|y3kSle`6o?pg!jmp0xu{4gFT$K)zl--R5}_YU>(0GanVgO z$^~zKj`u~Bg<9r*`|K^s!Fv5|tY@96m2`>#Tcf8bdtF@}RdfWvV(6jekNfXDOIu#uD3bI%Ivv=_R?v2U&j|8&=mN1s)btb^yHx~$MhYw8m`q}^p z(v_vVk#8JgLTDWyH!BLh&tBs`8(mgYbJaA6H`)rCav4NPT_>W%g8^1I7~xGYF*LkW z$0y>>A&z=b z8I>qtH7sKv~R1~dO8pbjr^261+`4SVv*Iwg4R{HTisrYGB^%s@zauD zOMJle>{9kX-n=z#o#v7Dt zO4sffcjJ7ie0eD-8zvzkk*VW_Bz|sgmKScji-?S!^?5y#%KGdB2r2f#l=L^wMrA^~ zwcjyXazw0ozr09Gm)JgvJ=x}lp7A#QL<)$p-gzgR6GzorWL))jjp99FL4|z;3!}ex z@1B}_{YOz&koa;4IagNww%(~=T3~pE)Addg$$~-4uygS>_c@-~NhDVu?u!sfaHG?;O5s!6zkA^wZf_fg;pi~qDrcd6PvzJX_|4FUY4n~ z>WbfvcuZ+s9ewYHgHL^rDkebNMwzV19^1RMwWY0IihvQx9b>+`@&{jR7y3oC6Sp94 zX*(O6-e4#-c~G?y#PJMZ;0L^MCKrCZqa1gP7rNyK)5U(ns|M3yk%ZgTGMuNBIG)kA zh$gsy#=yQ}qsGR@OkPDw0L;l>f!w$Zc}~^vBx(dl*It37MjbI7cFjcg!el{nzv)6p z>ebJl0Ti$*mkB5)GF@6EU5_nBUHh}`pGFbsl!u7CPoC2Es6(ED!;L>Lh{sI&nAx+m zi!y{cMO~U8iEtX6)?Ew0y`Fj!JEyatl36G%QfkeU=%ECYv5DVL5g2flWbKGs-AG;6 zUkknIa_NX~fH&h{ftnJPdcQah`Ig&+m$xrGOQY!y0a0 zq;n+hN$A(Qe^FYl2Ruo@8uxAg?K1v+7U7ikukT1bX2DiYHAO|JaRKIxZNovWz!(m9|Dfuq3R|$)oep;Wcat4@{gsnYK85KW5 zApm-B_hNRaG^%!=eP}P|9v?a7lYcwNGxhG3SPQiwcdvN&I(~Q$`;vaeehK-lpxBLM zs3|dPMt4-=m067?rQAM0A-KwbKsaLpw^+TldM+WKt943O*gtxT^(K?LR5Zm1pIU>N z#?LbK`|%D9Z^gna!@IlHKj4GExN%rj`dxBrZYtdwxwS z-cP7}WuJUoF6h)+oyJ^TE4N>UWZrUdcQqc<&>(c);zSD*z>bs5vOOCzeG8ka`w#Sv ztA>}#8LEzCxr1l(wU42_YMNwE22pBwVbj&yo4?aPLT%l{6!pu0Tz6AZCW6~T`aHw) zyU5_lg8S2r)aS4G1@p zL&i!VHI#;c(!BYc1SeZ-Yw9^9bDIq^sz>^z}kIy5bh?mU`5Jp>@ZmY`dA zkE+)7QJV?{-wCQk5#c~nN2~7A64RbRtk3?R&B352di&2`J?)v!zjrCk%`$05)tON> z*NH`1My5~+tIes3|sXCwXlBkx*-M41OsSBFH{Q5i79? z@1TZPEO3hp>JV+Ph=)ZuifXSiWO7LouS9A9@6d#)=V7-_(_vucC=5E{u#Ye(BE&e| z{7{&Jj(F$6*BlHB^NxEjKfFHz0ECi=Glq4v0!AOwJo#}lj&6daR6XdW6!Vwx3AEu(wEpw+s-xiN{Gpmi&0$CV(~Ej19)Ze|nUV}7H}R34-TJ;8cCpHO zrW6Kwk*_;@>3$C6t#ap2)!cu)q=Av`rRN7G!5_heKj;!zv3j%l78I%a1)xs-FxblL zQ_XgSeC)FqO!_9`3U3%Z7zmw`1Z#< zR)WyG(UJyuggn!)U(r%^`9ul)xFpzF5OW-Ez32#8Z0s+LOylPL1_R6UPHk_gwACN)cZ)4YH;qj2j`5JBICP6jPOC8~r$Xf#;N2!WBM1CHn zU`A5CxX+oBE0wUa`$#O2-?kOHBio@(DOchLd5yg73)Zy@QQN-#Y50QRLDp46Kc34g zPapvDgOZOu2GsPnsddexf@k*2)tZ88_0>^4wB#UrT;3d&)_AnuKj#s;DDeTNp}C&= zo;~I2>1QA8s)%`fca>ygh$AD+0z&Oi{rPMnGgWfBFQYUSQLPwQb#by3|B!Q)5))-! z+M{_^Z%w^6NaV_H`k1reVS^0ckZso0(zmwH4ExT6tDMaB(P-K5pHJbxg+U^q13BR=ud7OpM7);0=^1R z#I>xG6avB0h-)9zP+46_7JJeJlzH%e`D($V$QKUJQ)QsTKGcRDT`vV3A17A>oHVTaZDfk_~0P04|KO+~Dz}Ljl)S zn#c6p-E*>llI?BSCQofFl#d_gaqWhTSDOW*l)RWT@YZHD7#7?`T5Y+$4#!}#R)yP^2z$m;u08g}w)zPqn;FDLp&#yr$Q3r=Yu zWfs4|_i91Yj0~OL^S$E6`%VUvVcDi1yN!}EGBRV?@p_4JQ$B5t^G&J>o8zgQw=y3u z<>p`ftz?5+P0EvAgwfq_s?mUi_OQZGom4#pcdxisu# z&;xGXV$9l-NdC<)`x_*3G5ulNxqEunF4b^yPB`B$X%BzZa{eB{NTuoRxl&E_T+VV> zn}8#*n@Lp#&sR^*hkW#;E6uf5&`r_G^lh|lIE82kOwN7*3K{dR>@&9Tr+!1y7qji5 zQt#+n-QKCqCi`>-8jATXMi$1!pjDBTh3*FN8=47=@t9mFwn(5lRx{B&Wxr?0p^~_N zl6Z^C`UzoDf9txCPV~h!BK+qTnu!W;Oi{?;RRGsgx! zL{j#kTS0zgC;}c&V*s%bKP!(#Jx(VqG-H<@q@AOD+Mh0;Fi8giBxn2b^@)jzUjM@W zQdq(7NjleW9f}CXK(6yI>~6;+c{BQQtDoL4MG{wKG^D+6aJ>@TaVDFl?um|$W*E8% zDw#V~L?LI*tE}fIbG73Wb8Ck&qeNne6Do}K^hd6futasA;Rq z_WH3Y;p@bNfpprlmJhi^i4W2sko9YL%J$wZ7|P#!@@2^@>LP8Xm_*3MTo}LZ7HQ$v zuXarz%(=E}03~`N!_4^fs3bkUiuo~v7(NR{bPwq-UCLb9?SBdC}N3clA=*#gw zKK)@!zoiWdj)8)IHgcmbo&kaQbb%tpqc_<^(9W5b!(GM;j>P)F016G6HN_8B zCZ31uwoPdc&|Xkd>tJs73j~W|kp>5EEQXt#pMI#Vyu6TZxYdD1z>U8B?tN^^Uc4ae zZ^}lWl24(XKdZw;`ISf%e0*O}MZ!<1YQ+#Yk>DGArtRA2sWSduBWVtX&b?|KfkgK^ zo+IuB>GMb_X&QsmQOb7<7Fkm+)UsKE?ZWBj6xC+*wbKUQ5qK}-mr`JgY6UF%{x@J} zPnwG5c{m*SlkPzv7Y>iK01r?HglRKkK!@V&xCVsNwxrOs!DzCb7Bap=xt;OqQobEg zhLHlcskuqMErUf0s)u4=5djkhzL??+z#6w~$mE@9vKG6F{E&fv1fTZr%&5L1Tii2o zEuL=zfRrassl5?*h|qTDwsju~?(`-ft^h7*yaq`=fw5i@|1OETUZ@g7G6f zelDJzIbWY+N3#?J++3 zQ+}^{?FT)AAqv89o7!wBmqLO9_NN?aT%h3b!nq2xDLU459fE?)=RLFS9pdNQ^$Uh# zJ5STLlveoC7U>tf>4hs!`x_0{GU&zbN5j!s(@zQkI8Bj5xUl5^x$06y40C#d*7Gwm z&%Q|e#ZFwcH#PrUyp%n97p0p0pl@cnOo6A7ebOmBDf`^Lo)fVmzd59E__H+{cO#u1RO@8?Y%;(byfJhtLd#* zs=QWWLAguwRl95)x#r3*N$?=@U z$fEq@2}p^qZ0wL_5!wF4o8IW{?wnM^(MT$x&$@mMb6Ci2HP6^so8;H3qYmd&>pQ&) z1gw~Ijql|5+1rukiDdOT2tCeVnzn@ru*vE9 z%gBOxRSuVl@2zY+whHRwF|pScb>|5Fgh zT=d7CHoaG<`A{C#K29k>pt49~i9z1%O$qsDJLXG=qpJ{lvZvCeV^a*#aE|Izal-MB-0Y#P z(g$Xk*XM1|cp7^6ozB8AS)+L5FtbSykIg}f2dcXa2rtMN91I=YcE|36WGoT88CHFNeb>rVPYG2 zhb_k~z&z^9yvWdPz-QzrOP`)S5a0arhrD!`uH4|)Tae~7p2}qzXDgm}wuZPa3=3ru z3R2xMC5*v$@(gYDBECJ$N{^-&?leE&cwNBy`VIY)xRo71M=F<(>^(Sn0Wgo=G7t4^ z86+D;e(A>{Bsq`EL7kwSACk8lW>xC%@etAjaUx@#{;B*Cv4v1WG>;Pz1PqD!*!WE1 z-c9-u2;N%;T1lr;VV=A}wL{so3o(OvN(xT($l1Dv-EQ@;@T?uPKnq>ItTiZg^Hz*8 zwbCKXQwo=BC@`C7$)U#f@+uw9xS-9A^YUDAzjIZX)6ELF7VC$Bx$r=o`H27ch72H( zwP_;e+rdYotw3}5u@7#TbX#XW+Ece5WP zm1@;Pg~EvWRGoO=84QaIwc%iVJX||LrPfKSEVNUq%1MKuw_2xy0LNA6OB=5_mYoWV$)?ov8Wq$Htn!4pI5Ik*SAB;F>=451C&KQ`Z z9f6L#09|vVYkfsUMY>9630kpXZ+JzsA4yC;O3E%hYD*SiYSjyTgN z3B}lq?Uu5%G?sqlWcpICp)@sXowcek-4B1(LQ86v19C+GinCH|og?i68WEV)9L^mB z5fP6>fFj(iq)lp4s-OCEfA|!KJkv#5a>-~N6@zrW+ccmUkg5W*1QKM=Nb55E{P0 z8us;ZeEP)7x&1)gZ-%rhb)eDM=THe$2Xtx4a^9=&f4%yG-XepNh_QhGeC2BLYI-M_ zx`LbfuwtJ1i`d(TIca&}I0tLv+M%p+M$k{1`v3;BL!=>cD!6L&(8Kq!85!36(H31dA5kTI z*JV1*2J||B;wS&179Zf^iL}2Og7II18_zt#nAQkmFYFEu`u_o z1Nd5sH1@@-Fj4*@?bi5XXMI4eV>0fDwod}A1R9ZYa9AE|@i$=P4xeG^K%WPmd2nz$ zLNa@UQXcY`gbbVYsVO2O5C|K-1*3fuKt<8`9!z3|%=;7&Wrc?!Ri3G0TLF6w$Q{8m z6*?o4Cc4JG8-qTlA2Y|lR{;>hnGBi4d;MiN>$Pwd-Bi%2o-6z=Q+~y_!EA;EOzm&) z<#GadVO)pegB%?ojrq$C872E@^t;hYI`42%l67`Efi54%tF|A%e%bNNF8cIKG^OkQ z)nn;DDk2*z5%mj$0>R65KxiAiqn1ZCG&H0?&*T~Dh(^G}qNfULSuJ(#-A=Mry%#LF z$k`{RRa2bjq0nav+}M}4B3Sn<6J$sH5)eD6Rt-Sf{C7HBoS3U(ejrk@7~Rz zt88dMI=Q%{9c&zt_1M&Oa^?T%&!6(T4gw?~aZyd9X9u)^ECnn?^H{M~7&;=D`B7Xw zkA5$I*s>2KZc}ntK1(>FMv6s3}@kCoKE-p5a_8-Vs$Ni|$cDHPE`{E>#FmwAo0>z_eN%R>fZ|YhO z`-)D~J>r~)QGjzU9HsOprxB}@rIMJ&HC-Q^YZr4{D*tA0Fd?wn89 ze6O{UOcd@3Q5)Rv28hlB1-$(|@CO<0fZU1);_Bste+2IYh#Bfq$mgGd0T4cKI5_PM zdbRV~KJBkJ8?&`ThcK|x;(KMWNUaVNA}IhQ)$3HoKO{fT%-Ccn!3zFdRI7uiWdmK> z6)Km?UHi?+dhJcx-00&TrWkvxWVHLpiZQ!@hF52gnF`PxJ?y_(nI%o8ds4T9+8XrK zRquHT&IycN2#?U#KWZ4{)tCo2$FFxo@koI3B+BOs0g9OOP#i^?Vi++PXZS#r{-x(d zhdhX5DVKs1{(*g-6U(}cOP+8lyH-t%9-GC;!~~)7hDV=q;t@pOtVQ@?6m-#muH2;b z9N{G>;vXP(oiXhtqd@AC&!vD+&WHi6cx@V^BPt6!ezdG)NaUfk;`Tnd+@vhzoJBM7 zy5UzeMstK0^yon^$<_2p9)+*K4H_6;Aiz)ah^V;PB}OU#p4C-jKpCE;{7Ind9G|Kh z4~Qt6?=ee?38(z=Sd_-)6BSO*&U8alF%pqVTk^x08=t=LHpQxe#f(!CC3-E4Z8|%# z$QCSePIVn9XgnR`asa5x%AwG+d9A3Gxhe7Cs8vtMkws&SIrMABB(;n%agIPFjM3@9 z>I%`N&A5AX#!lau(E-iK&pkcSnt2&hyMg)7AA{}tAvx^(Fkdwi5=lyV2b5MDOiclt zwiu>z1Ag`*eKqNI&NjE~hIh3Ko4%?gC4V}idx)XBX*QYrQXt$7qKgrJwFwqLf7xjg-pH;KN60aoD^pUSiaU|C%q>pD?i#on1 zxXbvkZD(g^RT}hZY3q_Jz*go- z@B729#@v|fTk^`{GE~}qI8XUho1GU@<8(vE zr}ngx7LxA9^=gIM*8!^e#!V#dy}+1 zT(m5}8*h4J#&{_?6PSU5PrzGoWap??+*5N{gn_7CJrWX@VY`RVmXb8yHYl`8NlI!8 zyrtqKR02=~n4=v1S(~KE2n77gjeXPS(9sQNUG@&gx_H&|A3&dMX$e`BR_eNTPg?8h zvtl(csp16z!Wg$egacZ6*a>u?GtJnaS!SKF7l04>M5fc8J9jRfxTG-an5a6&H8Qd5 zqbqi1VfCV5he={iEJV#7OvfjD$`{saAp81psnGTK<_(!?7+{GUSe5{;uOKez3N3gX z?EH`{{{7^ObCnKN;kv53e$nO34VI(san=K|bg^8@Yo4^*JuNHjb5};Pv$-8-a-8;| z@vVO2y0>mYFa0gLIk~tTlJkll3*nP?GBM|kXQMO3$hK6;VMf3p##`N*iJka;DBdRw znV823ARb_7a>orb_&?6fWJ~6`eVDFEn$F9LHV)}g4WvQP!22ICX&jgpPiev-%37JG zA7(%$R5w;EBb5A0MnJwRpQ3U0J1Np*YPa!mcDj91;;bQ1+Q#~t>ZQ=h_6`WN08t91 z{6!EdCVf)%3F7e!@Zpc`0&o~A_53{-pzEt_yeeDxC9o(RBq0A_An@(_h}F%md$MvC zY-wk!c?N&*lq7A7W`P}0AOOS53_NQ^#A3nx1a7s*dI_olmPwY0u;g`ef|SL_IWVW2 z3=-N{v2}@5OoVflU;~?G&PCoT${1%TQtNHbVl4u}UOepSx2RHjVrtDWndXInaqfcw z#qyCZpcQ~YQ^=Q8zC83Y)p0=a?2#$*9NE!2wj21r9srA{uvo12zUc&s`Pl~`D3-VFFkFn>qTSLjWwcTV=Mu6y2tl<40)C(Z746}Y1!Ta@h_kP*4|PzGwlbd*o44_ zp>m0P9=IQPLC=X@HMz#n0hP7iEheYl%m;}seM99kf=+#TcJJFH{<$bJ;&Z7DfdX*cXpw9V#&TGi9^jozE6r)>EJ z-~a^J?v|t*T4OeYiBIqI!Ao|1*urQA#h5$Wx897^eu%tsG(lHR8lbJ>FK`V^lGgS~ zy|o`W0W3|<-@5@>#g-~fPb4{^e+Cnts`W>Ko|X)kZEAuc zI^KAT&UH@|&@fp-l}dvn1$T!#x&N{Ze=A{O*w@&tKWN*#PeUEBqN{V91?_%!%ob2! z_C{>jlvys6d4Vs}PT4Sk6Zuat96hYoDpzh^f&eiqkiFQHC;n0X`L~~-$nmU3zwV|w zOGY1m6=|S(k@83-<>zNSUri%_kvC37Se^`zQN`0rOG~So-peH{d>|}<&K~GB#`|ys zhXL}?8p?xkkIC9%pr?wjqV35h5V0xv;A&_<8Ru z6Xp}7xaSgijW}@h-(ABih?yR2N_}%Cc=7H5pJgC<((ZN##{x7??Po>#xg9~$xje#~ z#Vz$57#iP3L05AwH$=mxAGKOe9L+t%3;tkN^9*s>2pOW+x6*wWoGi%8_t8f>Gj{4UhcBNEofF|9Gze_b+4fI=}zhz02xbZkA%;L3?mH!Mi$(Bj!avJ?-jD$WhcSW*)TK;XS9&*kY;LpvIN0A!4EbEkkNMC9 zn;=DjM>i41epTST7~bujJH^{DYQsIk4J5w)em{0cb%;XcIjCQ4vB+}(##R<=2gZoi zwfzK0@A6g29Kiu`UsbbgJ z!67e?)#WVt1I>X2sM!E<{^t1s7+HDjR*X-oK|2=X^Jl-&GASE7`vsnDZ|41y?qum; zI$%EJ6orTq#*TMLf?Z~p_Qx9h2%x80S@SkEXE|;$y$Xr=V5R(}uP+8*DJ4B(y!Ft2 zeddtIY)^{OHx_WmVcpqO<4ul$7(2)+WsQx(y0sx}MV-&Zqo+8cr+{wo#01Ha%}#|} z8xiCTY{+@MJ}SrI4_KtL~Yx!tt4kM?}x;bE=2 zpQ)5^qK~^)9l~Mw0g<5-(a@Qhlq*pCO)d^OsW*1PllJsGzQmg#j?zz%DjlyC5krJh zxNNc#t=LXW+u`UMtllGQU#w&v4t&*rvH(hU(nRSKm0Ao~K=aX3F98|X|pZRZx? zT{f&?mWHG1-B_e|YR*`wT}+>yHIOp(zcL7Z%4THK5uBNSClYydjfSD{^{_`nP_**p z7B|iq)&!v>P$J8eV1lqCCtVa;A z-~1OksMzix=n0`mtc>3@v{dC;Gzj=0`u9JRswt~75?bPYmT&XQpf3(GAl_#uK3OXa zi0kU~4GAOHDTmD|IF_b^SL)=Su^7;!oa+$CpXtp2(Y5O^SoK()6pCEB~_ zPap-9;c%}+8R%F1b*d)a5*LE4qvLPbCHj4x+`{F-K^=Iz*{#_)ih^TC2jB+$Rd_Y; z%~`Qvp@OrzQoSR|hu$)uJ*3q=H#D4$I@XG&tnFe(rYdnbk>HC>9@5>M?^UCdm*ecy zxo;$^XN)*K0_tC}M47F9)w+xDu!Yk@=8sb)&PExH)7aqZKneh<-1m0EbYN}^G~dT& zmhqVB3AF?|pd|Zo$0S~GJpgR8_}Nk0ZJ1b{QV<}7GdI14{qBrU6oHFN2MbICPuBhK zsqb+#&AvxA8&^FWiw@Vla&z|6!9nAFXBjvz0kB!)g@8<2;uS(90l1L%5CXVl(u@my zcrGe{?YfZ70E%UIcb7XNy{3&}((Q7r+g2)s(>yMnUwYp;<*1?M`3IM6zrL$9dcUXp z=V;nq2?Abe&XkrVmLRIW@!JqabgRDqH~`R0xAvcaC46%8m!4IRHhBCJ)%J=YU@`?D z)Vf6>B<&R`vcwo(Gy^O zs?=#q|B4?^Oa=1bk>}mNCEM|(%lmwZVIlg_!Ja@$tg_r}k_|}=)HVsonNLB#%{To&;j{+u`(h%#- z-bUr3=0IGmKU(JTBdyAI*6`?Zr+=_ExEEV0^mpaVF{y7TV9n>41cyMmdnGb!65H)e zwP|)dVEFy$$3T#=#QjXm{T_eCWKkvcZ(Qdh+wlsyO|McJ>SICbVbroC+CZ`3g3!^^ zpRA1v3qy*mLQ%>GE{;WI|GjHDlLEFxc-!#!Lt4gbZ1;i7%x>Vn>AjHyy)b&BYI_Z` ze1q;wee-{B8B+-(_c{niCT97QPu_!=^~^4T+V^;Zxm?hroO3A{Cv3&9_CuD_w#=ks z>nH&p5375Do&pAQO8&?glXtX{9=MPH8#leSTD0j$07y|f9pETi5m# zlKGMGOt1{)DjBLbZQqjWlV@jnh}K7WT>smT$O!2cBhQBiuR KSgc?X{C@yo2NzTT From b5ac53e152db13482a75fec72b7a45d76cbbeedb Mon Sep 17 00:00:00 2001 From: day0n Date: Tue, 17 Oct 2023 01:38:10 +0800 Subject: [PATCH 10/68] add ceph module --- .../cn/piflow/bundle/ceph/CephRead.scala | 96 +++++++++++++---- .../cn/piflow/bundle/ceph/CephWrite.scala | 100 +++++++++++------- 2 files changed, 135 insertions(+), 61 deletions(-) diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephRead.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephRead.scala index 3b0fbd12..5efa319b 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephRead.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephRead.scala @@ -4,9 +4,9 @@ import cn.piflow._ import cn.piflow.conf._ import cn.piflow.conf.bean.PropertyDescriptor import cn.piflow.conf.util.{ImageUtil, MapUtil} +import org.apache.spark.sql.types.{StringType, StructField, StructType} import org.apache.spark.sql.{DataFrame, SparkSession} - class CephRead extends ConfigurableStop { val authorEmail: String = "niuzj@gmqil.com" @@ -16,9 +16,12 @@ class CephRead extends ConfigurableStop { var cephAccessKey:String = _ var cephSecretKey:String = _ - var cephBucket:String = _ var cephEndpoint:String = _ var types: String = _ + var path: String = _ + var header: Boolean = _ + var delimiter: String = _ + var schema: String = _ def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { val spark = pec.get[SparkSession]() @@ -26,25 +29,44 @@ class CephRead extends ConfigurableStop { spark.conf.set("fs.s3a.access.key", cephAccessKey) spark.conf.set("fs.s3a.secret.key", cephSecretKey) spark.conf.set("fs.s3a.endpoint", cephEndpoint) + spark.conf.set("fs.s3a.connection.ssl.enabled", "false") var df:DataFrame = null if (types == "parquet") { df = spark.read - .option("compression", "gzip") // 压缩算法,可选项包括gzip, snappy, lzo, none - .parquet(s"s3a://$cephBucket@$cephEndpoint") + .parquet(path) } + if (types == "csv") { - df = spark.read - .option("header", true) - .option("inferSchema", true) - .option("delimiter", ",") - .csv(s"s3a://$cephBucket@$cephEndpoint") + if (header){ + df = spark.read + .option("header", header) + .option("inferSchema", "true") + .option("delimiter", delimiter) + .csv(path) + } + else{ + val field = schema.split(",").map(x => x.trim) + val structFieldArray: Array[StructField] = new Array[StructField](field.size) + for (i <- 0 to field.size - 1) { + structFieldArray(i) = new StructField(field(i), StringType, nullable = true) + } + val schemaStructType = StructType(structFieldArray) + + df = spark.read + .option("header", header) + .option("inferSchema", "false") + .option("delimiter", delimiter) + .option("timestampFormat", "yyyy/MM/dd HH:mm:ss ZZ") + .schema(schemaStructType) + .csv(path) + } } + if (types == "json") { - df = spark.read - .option("multiline", "true") // 处理多行 JSON - .json(s"s3a://$cephBucket@$cephEndpoint") + df = spark.read + .json(path) } out.write(df) @@ -59,9 +81,12 @@ class CephRead extends ConfigurableStop { override def setProperties(map: Map[String, Any]): Unit = { cephAccessKey = MapUtil.get(map,"cephAccessKey").asInstanceOf[String] cephSecretKey = MapUtil.get(map, "cephSecretKey").asInstanceOf[String] - cephBucket = MapUtil.get(map,"cephBucket").asInstanceOf[String] cephEndpoint = MapUtil.get(map,"cephEndpoint").asInstanceOf[String] types = MapUtil.get(map,"types").asInstanceOf[String] + path = MapUtil.get(map,"path").asInstanceOf[String] + header = MapUtil.get(map, "header").asInstanceOf[String].toBoolean + delimiter = MapUtil.get(map, "delimiter").asInstanceOf[String] + schema = MapUtil.get(map, "schema").asInstanceOf[String] } override def getPropertyDescriptor(): List[PropertyDescriptor] = { @@ -86,14 +111,6 @@ class CephRead extends ConfigurableStop { .example("") descriptor = cephSecretKey :: descriptor - val cephBucket=new PropertyDescriptor() - .name("cephBucket") - .displayName("cephBucket") - .description("This parameter is of type String and represents the name of the bucket in the Ceph storage system where the data will be stored/retrieved") - .defaultValue("") - .required(true) - .example("") - descriptor = cephBucket :: descriptor val cephEndpoint = new PropertyDescriptor() @@ -116,6 +133,43 @@ class CephRead extends ConfigurableStop { .example("csv") descriptor = types :: descriptor + val header = new PropertyDescriptor() + .name("header") + .displayName("Header") + .description("Whether the csv file has a header") + .defaultValue("false") + .allowableValues(Set("true", "false")) + .required(true) + .example("true") + descriptor = header :: descriptor + + val delimiter = new PropertyDescriptor() + .name("delimiter") + .displayName("Delimiter") + .description("The delimiter of csv file") + .defaultValue("") + .required(true) + .example(",") + descriptor = delimiter :: descriptor + + val schema = new PropertyDescriptor() + .name("schema") + .displayName("Schema") + .description("The schema of csv file") + .defaultValue("") + .required(false) + .example("id,name,gender,age") + descriptor = schema :: descriptor + + val path = new PropertyDescriptor() + .name("path") + .displayName("Path") + .description("The file path you want to write to") + .defaultValue("") + .required(true) + .example("s3a://radosgw-test/test_df") + descriptor = path :: descriptor + descriptor } diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephWrite.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephWrite.scala index 796d3531..abc47433 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephWrite.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephWrite.scala @@ -4,11 +4,12 @@ import cn.piflow._ import cn.piflow.conf._ import cn.piflow.conf.bean.PropertyDescriptor import cn.piflow.conf.util.{ImageUtil, MapUtil} -import org.apache.spark.sql.{DataFrame, SparkSession} +import org.apache.spark.sql.SparkSession class CephWrite extends ConfigurableStop { + val authorEmail: String = "niuzj@gmqil.com" val description: String = "Read data from ceph" val inportList: List[String] = List(Port.DefaultPort) @@ -16,40 +17,49 @@ class CephWrite extends ConfigurableStop { var cephAccessKey:String = _ var cephSecretKey:String = _ - var cephBucket:String = _ var cephEndpoint:String = _ var types: String = _ - var saveMode:String = _ + var path:String = _ + var header: Boolean = _ + var delimiter: String = _ + def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + + + val spark = pec.get[SparkSession]() + + spark.conf.set("fs.s3a.access.key", cephAccessKey) + spark.conf.set("fs.s3a.secret.key", cephSecretKey) + spark.conf.set("fs.s3a.endpoint", cephEndpoint) + spark.conf.set("fs.s3a.connection.ssl.enabled", "false") + + // Create a DataFrame from the data val df = in.read() + if (types == "parquet") { df.write - .format("parquet") // You can choose the format you prefer (e.g., parquet, ORC, etc.) - .option("header", "true") - .mode(saveMode) // You can use "overwrite" or "append" based on your needs - .save(s"s3a://$cephBucket@$cephEndpoint") + .format("parquet") + .mode("overwrite") // You can use "overwrite" or "append" based on your needs + .save(path) } if (types == "csv") { df.write .format("csv") - .option("header", "true") - .option("delimiter", ",") // CSV文件的分隔符 - .option("quote", "\"") // 引号字符 - .option("escape", "\"") // 转义字符 - .mode(saveMode) // You can use "overwrite" or "append" based on your needs - .save(s"s3a://$cephBucket@$cephEndpoint") + .option("header", header) + .option("delimiter",delimiter) + .mode("overwrite") // You can use "overwrite" or "append" based on your needs + .save(path) } if (types == "json") { df.write .format("json") - .option("compression", "gzip") // 压缩算法,可选项包括gzip, snappy, lzo, none - .mode(saveMode)// You can use "overwrite" or "append" based on your needs - .save(s"s3a://$cephBucket@$cephEndpoint") + .mode("overwrite")// You can use "overwrite" or "append" based on your needs + .save(path) } @@ -62,20 +72,19 @@ class CephWrite extends ConfigurableStop { override def setProperties(map: Map[String, Any]): Unit = { - cephAccessKey = MapUtil.get(map,"cephAccessKey").asInstanceOf[String] + cephAccessKey = MapUtil.get(map, "cephAccessKey").asInstanceOf[String] cephSecretKey = MapUtil.get(map, "cephSecretKey").asInstanceOf[String] - cephBucket = MapUtil.get(map,"cephBucket").asInstanceOf[String] - cephEndpoint = MapUtil.get(map,"cephEndpoint").asInstanceOf[String] - types = MapUtil.get(map,"types").asInstanceOf[String] - saveMode = MapUtil.get(map,"saveMode").asInstanceOf[String] + cephEndpoint = MapUtil.get(map, "cephEndpoint").asInstanceOf[String] + types = MapUtil.get(map, "types").asInstanceOf[String] + path = MapUtil.get(map, "path").asInstanceOf[String] + header = MapUtil.get(map, "header").asInstanceOf[String].toBoolean + delimiter = MapUtil.get(map, "delimiter").asInstanceOf[String] } override def getPropertyDescriptor(): List[PropertyDescriptor] = { var descriptor : List[PropertyDescriptor] = List() - val saveModeOption = Set("append","overwrite","error","ignore") - val cephAccessKey=new PropertyDescriptor() .name("cephAccessKey") .displayName("cephAccessKey") @@ -94,15 +103,6 @@ class CephWrite extends ConfigurableStop { .example("") descriptor = cephSecretKey :: descriptor - val cephBucket=new PropertyDescriptor() - .name("cephBucket") - .displayName("cephBucket") - .description("This parameter is of type String and represents the name of the bucket in the Ceph storage system where the data will be stored/retrieved") - .defaultValue("") - .required(true) - .example("") - descriptor = cephBucket :: descriptor - val cephEndpoint = new PropertyDescriptor() .name("cephEndpoint") @@ -124,15 +124,35 @@ class CephWrite extends ConfigurableStop { .example("csv") descriptor = types :: descriptor - val saveMode = new PropertyDescriptor() - .name("saveMode") - .displayName("SaveMode") - .description("The save mode for csv file") - .allowableValues(saveModeOption) - .defaultValue("append") + val delimiter = new PropertyDescriptor() + .name("delimiter") + .displayName("Delimiter") + .description("The delimiter of csv file") + .defaultValue("") + .required(true) + .example(",") + descriptor = delimiter :: descriptor + + + val header = new PropertyDescriptor() + .name("header") + .displayName("Header") + .description("Whether the csv file has a header") + .defaultValue("false") + .allowableValues(Set("true", "false")) + .required(true) + .example("true") + descriptor = header :: descriptor + + + val path= new PropertyDescriptor() + .name("path") + .displayName("Path") + .description("The file path you want to write to") + .defaultValue("") .required(true) - .example("append") - descriptor = saveMode :: descriptor + .example("s3a://radosgw-test/test_df") + descriptor = path :: descriptor descriptor From 48f642bc46fcbaad1810597d9bf5d8f08c8797da Mon Sep 17 00:00:00 2001 From: day0n Date: Wed, 18 Oct 2023 14:42:35 +0800 Subject: [PATCH 11/68] add ceph module --- .../cn/piflow/bundle/ceph/CephRead.scala | 41 ++------------ .../cn/piflow/bundle/ceph/CephWrite.scala | 22 +++----- .../cn/piflow/bundle/ceph/CephReadTest.scala | 50 +++++++++++++++++ .../cn/piflow/bundle/ceph/CephWriteTest.scala | 55 +++++++++++++++++++ 4 files changed, 118 insertions(+), 50 deletions(-) create mode 100644 piflow-bundle/src/test/scala/cn/piflow/bundle/ceph/CephReadTest.scala create mode 100644 piflow-bundle/src/test/scala/cn/piflow/bundle/ceph/CephWriteTest.scala diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephRead.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephRead.scala index 5efa319b..65aad9bc 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephRead.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephRead.scala @@ -4,7 +4,6 @@ import cn.piflow._ import cn.piflow.conf._ import cn.piflow.conf.bean.PropertyDescriptor import cn.piflow.conf.util.{ImageUtil, MapUtil} -import org.apache.spark.sql.types.{StringType, StructField, StructType} import org.apache.spark.sql.{DataFrame, SparkSession} class CephRead extends ConfigurableStop { @@ -21,7 +20,6 @@ class CephRead extends ConfigurableStop { var path: String = _ var header: Boolean = _ var delimiter: String = _ - var schema: String = _ def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { val spark = pec.get[SparkSession]() @@ -39,29 +37,12 @@ class CephRead extends ConfigurableStop { } if (types == "csv") { - if (header){ - df = spark.read - .option("header", header) - .option("inferSchema", "true") - .option("delimiter", delimiter) - .csv(path) - } - else{ - val field = schema.split(",").map(x => x.trim) - val structFieldArray: Array[StructField] = new Array[StructField](field.size) - for (i <- 0 to field.size - 1) { - structFieldArray(i) = new StructField(field(i), StringType, nullable = true) - } - val schemaStructType = StructType(structFieldArray) - - df = spark.read - .option("header", header) - .option("inferSchema", "false") - .option("delimiter", delimiter) - .option("timestampFormat", "yyyy/MM/dd HH:mm:ss ZZ") - .schema(schemaStructType) - .csv(path) - } + + df = spark.read + .option("header", header) + .option("inferSchema", "true") + .option("delimiter", delimiter) + .csv(path) } if (types == "json") { @@ -86,7 +67,6 @@ class CephRead extends ConfigurableStop { path = MapUtil.get(map,"path").asInstanceOf[String] header = MapUtil.get(map, "header").asInstanceOf[String].toBoolean delimiter = MapUtil.get(map, "delimiter").asInstanceOf[String] - schema = MapUtil.get(map, "schema").asInstanceOf[String] } override def getPropertyDescriptor(): List[PropertyDescriptor] = { @@ -152,14 +132,6 @@ class CephRead extends ConfigurableStop { .example(",") descriptor = delimiter :: descriptor - val schema = new PropertyDescriptor() - .name("schema") - .displayName("Schema") - .description("The schema of csv file") - .defaultValue("") - .required(false) - .example("id,name,gender,age") - descriptor = schema :: descriptor val path = new PropertyDescriptor() .name("path") @@ -170,7 +142,6 @@ class CephRead extends ConfigurableStop { .example("s3a://radosgw-test/test_df") descriptor = path :: descriptor - descriptor } diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephWrite.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephWrite.scala index abc47433..0fb03275 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephWrite.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/ceph/CephWrite.scala @@ -3,7 +3,7 @@ package cn.piflow.bundle.ceph import cn.piflow._ import cn.piflow.conf._ import cn.piflow.conf.bean.PropertyDescriptor -import cn.piflow.conf.util.{ImageUtil, MapUtil} +import cn.piflow.conf.util.{ImageUtil,MapUtil} import org.apache.spark.sql.SparkSession @@ -25,8 +25,6 @@ class CephWrite extends ConfigurableStop { def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { - - val spark = pec.get[SparkSession]() spark.conf.set("fs.s3a.access.key", cephAccessKey) @@ -34,15 +32,13 @@ class CephWrite extends ConfigurableStop { spark.conf.set("fs.s3a.endpoint", cephEndpoint) spark.conf.set("fs.s3a.connection.ssl.enabled", "false") - // Create a DataFrame from the data val df = in.read() - if (types == "parquet") { df.write .format("parquet") - .mode("overwrite") // You can use "overwrite" or "append" based on your needs + .mode("overwrite") // only overwrite .save(path) } @@ -51,26 +47,23 @@ class CephWrite extends ConfigurableStop { .format("csv") .option("header", header) .option("delimiter",delimiter) - .mode("overwrite") // You can use "overwrite" or "append" based on your needs + .mode("overwrite") .save(path) } if (types == "json") { df.write .format("json") - .mode("overwrite")// You can use "overwrite" or "append" based on your needs + .mode("overwrite") .save(path) } - } def initialize(ctx: ProcessContext): Unit = { } - - override def setProperties(map: Map[String, Any]): Unit = { cephAccessKey = MapUtil.get(map, "cephAccessKey").asInstanceOf[String] cephSecretKey = MapUtil.get(map, "cephSecretKey").asInstanceOf[String] @@ -103,7 +96,6 @@ class CephWrite extends ConfigurableStop { .example("") descriptor = cephSecretKey :: descriptor - val cephEndpoint = new PropertyDescriptor() .name("cephEndpoint") .displayName("cephEndpoint") @@ -128,7 +120,7 @@ class CephWrite extends ConfigurableStop { .name("delimiter") .displayName("Delimiter") .description("The delimiter of csv file") - .defaultValue("") + .defaultValue(",") .required(true) .example(",") descriptor = delimiter :: descriptor @@ -138,7 +130,7 @@ class CephWrite extends ConfigurableStop { .name("header") .displayName("Header") .description("Whether the csv file has a header") - .defaultValue("false") + .defaultValue("true") .allowableValues(Set("true", "false")) .required(true) .example("true") @@ -149,7 +141,7 @@ class CephWrite extends ConfigurableStop { .name("path") .displayName("Path") .description("The file path you want to write to") - .defaultValue("") + .defaultValue("s3a://radosgw-test/test_df") .required(true) .example("s3a://radosgw-test/test_df") descriptor = path :: descriptor diff --git a/piflow-bundle/src/test/scala/cn/piflow/bundle/ceph/CephReadTest.scala b/piflow-bundle/src/test/scala/cn/piflow/bundle/ceph/CephReadTest.scala new file mode 100644 index 00000000..3a4be9e0 --- /dev/null +++ b/piflow-bundle/src/test/scala/cn/piflow/bundle/ceph/CephReadTest.scala @@ -0,0 +1,50 @@ +package cn.piflow.bundle.ceph + +import org.apache.spark.sql.{DataFrame, SparkSession} + +object CephReadTest { + + var cephAccessKey: String = _ + var cephSecretKey: String = _ + var cephEndpoint: String = _ + var types: String = _ + var path: String = _ + var header: Boolean = _ + var delimiter: String = _ + + def main(args: Array[String]): Unit = { + val spark = SparkSession.builder(). + master("local[*]"). + appName("CephReadTest"). + getOrCreate() + + spark.conf.set("fs.s3a.access.key", cephAccessKey) + spark.conf.set("fs.s3a.secret.key", cephSecretKey) + spark.conf.set("fs.s3a.endpoint", cephEndpoint) + spark.conf.set("fs.s3a.connection.ssl.enabled", "false") + + var df:DataFrame = null + + if (types == "parquet") { + df = spark.read + .parquet(path) + } + + if (types == "csv") { + + df = spark.read + .option("header", header) + .option("inferSchema", "true") + .option("delimiter", delimiter) + .csv(path) + } + + if (types == "json") { + df = spark.read + .json(path) + } + df.show() + + } + +} diff --git a/piflow-bundle/src/test/scala/cn/piflow/bundle/ceph/CephWriteTest.scala b/piflow-bundle/src/test/scala/cn/piflow/bundle/ceph/CephWriteTest.scala new file mode 100644 index 00000000..3f4237ff --- /dev/null +++ b/piflow-bundle/src/test/scala/cn/piflow/bundle/ceph/CephWriteTest.scala @@ -0,0 +1,55 @@ +package com.dkl.s3.spark + +import org.apache.spark.sql.{DataFrame, SparkSession} + +object CephWriteTest { + var cephAccessKey: String = _ + var cephSecretKey: String = _ + var cephEndpoint: String = _ + var types: String = _ + var path: String = _ + var header: Boolean = _ + var delimiter: String = _ + + + def main(args: Array[String]): Unit = { + val spark = SparkSession.builder(). + master("local[*]"). + appName("SparkS3Demo"). + getOrCreate() + + spark.conf.set("fs.s3a.access.key", cephAccessKey) + spark.conf.set("fs.s3a.secret.key", cephSecretKey) + spark.conf.set("fs.s3a.endpoint", cephEndpoint) + spark.conf.set("fs.s3a.connection.ssl.enabled","false") + + + import spark.implicits._ + val df = Seq((1, "json", 10, 1000, "2022-09-27")).toDF("id", "name", "value", "ts", "dt") + + if (types == "parquet") { + df.write + .format("parquet") + .mode("overwrite") // only overwrite + .save(path) + } + + if (types == "csv") { + df.write + .format("csv") + .option("header", header) + .option("delimiter", delimiter) + .mode("overwrite") + .save(path) + } + + if (types == "json") { + df.write + .format("json") + .mode("overwrite") + .save(path) + } + + } + +} From 5fab4f694e2d303c0bdc3030a2c7965fea77507f Mon Sep 17 00:00:00 2001 From: ygang Date: Wed, 1 Nov 2023 18:40:34 +0800 Subject: [PATCH 12/68] Fix the issue of not displaying resources --- piflow-server/src/main/scala/cn/piflow/api/API.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/piflow-server/src/main/scala/cn/piflow/api/API.scala b/piflow-server/src/main/scala/cn/piflow/api/API.scala index d7af0371..8adc7312 100644 --- a/piflow-server/src/main/scala/cn/piflow/api/API.scala +++ b/piflow-server/src/main/scala/cn/piflow/api/API.scala @@ -139,16 +139,16 @@ object API { val totalVirtualCores = matricInfo.getOrElse("totalVirtualCores",""); - val allocatedVirtualCores = matricInfo.getOrElse("allocatedVirtualCores",""); - val remainingVirtualCores = totalVirtualCores.asInstanceOf[Double] - allocatedVirtualCores.asInstanceOf[Double]; + val allocatedVirtualCores = matricInfo.getOrElse("allocatedVirtualCores","") + val remainingVirtualCores = totalVirtualCores.toString.toDouble - allocatedVirtualCores.toString.toDouble; val cpuInfo = Map( "totalVirtualCores" -> totalVirtualCores, "allocatedVirtualCores" -> allocatedVirtualCores, "remainingVirtualCores" -> remainingVirtualCores ) - val totalMemoryGB = matricInfo.getOrElse("totalMB","").asInstanceOf[Double]/1024; - val allocatedMemoryGB = matricInfo.getOrElse("allocatedMB","").asInstanceOf[Double]/1024; + val totalMemoryGB = matricInfo.getOrElse("totalMB","").toString.toDouble/1024; + val allocatedMemoryGB = matricInfo.getOrElse("allocatedMB","").toString.toDouble/1024; val remainingMemoryGB = totalMemoryGB - allocatedMemoryGB; val memoryInfo = Map( "totalMemoryGB" -> totalMemoryGB, From c1f5935fde22a44122453af4c9f44b9aa5787dd0 Mon Sep 17 00:00:00 2001 From: tianyao-0315 <117445929+tianyao-0315@users.noreply.github.com> Date: Sun, 12 Nov 2023 20:58:55 +0800 Subject: [PATCH 13/68] add cla --- ...317\200Flow_Open_Source_Individual_CLA.docx" | Bin 0 -> 24486 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "Governance/\317\200Flow_Open_Source_Individual_CLA.docx" diff --git "a/Governance/\317\200Flow_Open_Source_Individual_CLA.docx" "b/Governance/\317\200Flow_Open_Source_Individual_CLA.docx" new file mode 100644 index 0000000000000000000000000000000000000000..cf2ddbd052c3d5cace9b999bad0823c1e0c3220a GIT binary patch literal 24486 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 literal 0 HcmV?d00001 From 722d0e835e7a07d242c0b551e30247c96c25e034 Mon Sep 17 00:00:00 2001 From: tianyao-0315 <117445929+tianyao-0315@users.noreply.github.com> Date: Sun, 12 Nov 2023 20:59:49 +0800 Subject: [PATCH 14/68] =?UTF-8?q?Update=20=E5=8E=9F=E5=88=99.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "Governance/\345\216\237\345\210\231.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/Governance/\345\216\237\345\210\231.md" "b/Governance/\345\216\237\345\210\231.md" index 9173e661..a5c067f0 100644 --- "a/Governance/\345\216\237\345\210\231.md" +++ "b/Governance/\345\216\237\345\210\231.md" @@ -29,4 +29,4 @@ PifFow社区遵循[社区行为准则](https://github.com/cas-bigdatalab/piflow/ ### CLA -所有贡献者都必须签署PifFow CLA,请具体看[这里](https://github.com/cas-bigdatalab/piflow/blob/master/Governance/image-20211118094103884.png)。 +所有贡献者都必须签署PifFow CLA,请具体看[这里]([https://github.com/cas-bigdatalab/piflow/blob/master/Governance/image-20211118094103884.png](https://github.com/cas-bigdatalab/piflow/blob/master/Governance/%CF%80Flow_Open_Source_Individual_CLA.docx)https://github.com/cas-bigdatalab/piflow/blob/master/Governance/%CF%80Flow_Open_Source_Individual_CLA.docx)。 From a9bee85dd30e33192487a4054e68d8f821b5b4e9 Mon Sep 17 00:00:00 2001 From: tianyao-0315 <117445929+tianyao-0315@users.noreply.github.com> Date: Sun, 12 Nov 2023 21:01:27 +0800 Subject: [PATCH 15/68] =?UTF-8?q?Update=20=E5=8E=9F=E5=88=99.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "Governance/\345\216\237\345\210\231.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/Governance/\345\216\237\345\210\231.md" "b/Governance/\345\216\237\345\210\231.md" index a5c067f0..b9d93d2b 100644 --- "a/Governance/\345\216\237\345\210\231.md" +++ "b/Governance/\345\216\237\345\210\231.md" @@ -29,4 +29,4 @@ PifFow社区遵循[社区行为准则](https://github.com/cas-bigdatalab/piflow/ ### CLA -所有贡献者都必须签署PifFow CLA,请具体看[这里]([https://github.com/cas-bigdatalab/piflow/blob/master/Governance/image-20211118094103884.png](https://github.com/cas-bigdatalab/piflow/blob/master/Governance/%CF%80Flow_Open_Source_Individual_CLA.docx)https://github.com/cas-bigdatalab/piflow/blob/master/Governance/%CF%80Flow_Open_Source_Individual_CLA.docx)。 +所有贡献者都必须签署PifFow CLA,请具体看[这里](https://github.com/cas-bigdatalab/piflow/blob/master/Governance/image-20211118094103884.png](https://github.com/cas-bigdatalab/piflow/blob/master/Governance/%CF%80Flow_Open_Source_Individual_CLA.docx)https://github.com/cas-bigdatalab/piflow/blob/master/Governance/%CF%80Flow_Open_Source_Individual_CLA.docx)。 From e39a6d65ece24e69f5a8daa7961b0f455eec5c44 Mon Sep 17 00:00:00 2001 From: tianyao-0315 <117445929+tianyao-0315@users.noreply.github.com> Date: Sun, 12 Nov 2023 21:04:14 +0800 Subject: [PATCH 16/68] =?UTF-8?q?Update=20=E5=8E=9F=E5=88=99.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "Governance/\345\216\237\345\210\231.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/Governance/\345\216\237\345\210\231.md" "b/Governance/\345\216\237\345\210\231.md" index b9d93d2b..0b75cbb9 100644 --- "a/Governance/\345\216\237\345\210\231.md" +++ "b/Governance/\345\216\237\345\210\231.md" @@ -29,4 +29,4 @@ PifFow社区遵循[社区行为准则](https://github.com/cas-bigdatalab/piflow/ ### CLA -所有贡献者都必须签署PifFow CLA,请具体看[这里](https://github.com/cas-bigdatalab/piflow/blob/master/Governance/image-20211118094103884.png](https://github.com/cas-bigdatalab/piflow/blob/master/Governance/%CF%80Flow_Open_Source_Individual_CLA.docx)https://github.com/cas-bigdatalab/piflow/blob/master/Governance/%CF%80Flow_Open_Source_Individual_CLA.docx)。 +所有贡献者都必须签署PifFow CLA,请具体看[这里](https://github.com/cas-bigdatalab/piflow/blob/master/Governance/%CF%80Flow_Open_Source_Individual_CLA.docx)。 From 745554fb24744c31239fbb6392deeada2dbb8f34 Mon Sep 17 00:00:00 2001 From: tianyao-0315 <117445929+tianyao-0315@users.noreply.github.com> Date: Mon, 13 Nov 2023 09:13:35 +0800 Subject: [PATCH 17/68] ADD CLA pdf --- ...317\200Flow_Open_Source_Individual_CLA.pdf" | Bin 0 -> 172335 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "Governance/\317\200Flow_Open_Source_Individual_CLA.pdf" diff --git "a/Governance/\317\200Flow_Open_Source_Individual_CLA.pdf" "b/Governance/\317\200Flow_Open_Source_Individual_CLA.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..3294d8849dfbff970662acf0b61f7649646eec3a GIT binary patch literal 172335 zcmd42bC6|E*XLWdZM)01ZL`a^tIM`++cvxGsxI5Mty}$j-{(Hhy)iK}|4hW3I491| z+_}D)Yvqc4_Q}sqQh8xf8U|W6DAK-$;bmATCIWf_TLTMNZf-gOXD2gT2LcKuF>@;` zV@Er4V@d)#AzN!}V;d(&0*e1C*y-E2{nxRBvA&bJt&On0lQ98>Fef8DBNGDy0~0;R z_lNBVJp(xd6Zv18zwQ3YetrR{0muU=0T396XsLalkurAsW$R${U(zzRM*k}%c?Vk~ zXG7y}sc&N?TW1GD<8Lc-6LVvu|JeYPoDD3D4W0h6QZ{$8`X24Ky|RP8o!z$~ov6N* zqcJZptg(&J-#9S*XFw#B2u%K-CZH3PA)u4Bb+FdA`u0eGfZroXckA=*g753)!)I%N;QVcCYyPcg(8nj@>yx90 zZ1Zam{w5*@Kc(mMv7}|o>+||*cJvAV>+Z3G?_J^aiSI-Ag?l>D2lHY}%o5Ca%jezm ztqWoH^DKt1$Ae>8Z7r#Z88B5D3~>ve!5viYN_!KuF|0Ez8AR z?N7#IcXJ-_sMbcrSg43T{(|!4MV$0~Aa?g3O4#nayVM3n_! zIYd>E_59L!s`bF)(f)%PTI5tFR|6-)>yI#~$De#NvRchmk#~@N=sl#7&%XlzVb_#vd zX!gUS!HPA-CNM$3uQG;*?YZ)M7K>~hVz<2giJV0o5IOWrI0CS!o6uRjx!=7o_(T_?(2}-P~UgnD^1PWy*kf zY5SnSeh*k+_E0$57;}kZw?m_h(ap)S^wf+!^Zz>&!Tfl#3npVWr)W5K6}kRs`8BlW%UClDG>~VD>|caH{qtoFL=9=*{71A(4@)n7o4jn7>HQ>HjJ9@VF+J+Al|TiwqRP%`^_eYU5juGd}!6 zv$AZF(Q9rI-aK#NAi35s08T2NUfU`7gF@K|^JE4_k?3;4P3T^r5Y*Jn?&s9@Etbmm zJL4FRgq><4RD76ww3t+byB;`qvK$?UY9i2|+{uC;27c&MB*ZA_1gw|Ss%}|%lUC}=B9;&&EY&!QmmC9B)Q4|c&fHV+E_A>{%)5ip>Bk(=hu*~$ z*J^h#3Wz>6j-&3x++CIdtmQ$qqVA2d7(nI79yxOl?!^{~0gwL}CtHvY&_YeAr1#^* z&!+Sf@5ta}65SomV1$j!C$y>kZC%fBHo>Bagh%y-2OgE_)PS?KF(!i}G<&R{St6LB zTgTJY7ueR>o`}~GfRs2^2>culV`SQ3Zft0n>B?g?c!EoZky71fE%ZF@y0n2@AHJl3 zc0C}fvn08Za zd}1GWNwoMp=M~6u9zCx@Y%0wwHV2+`{z{Nr;#AYm-xJp1HDR8-6LOn)K64x}ff54}qtouKCLq+R*ML;R zFp2_&6>$J@=wxnZW|-{aL7NQR3q&mTU%%vRXUWv~O7mW5lfPUVm=Hv+_ZykKXe-JK z;;l;eEe-WJJ6o%SSUfBgk;MkEtmH!EJidP~If&E$ASl3!7R8v!SZ?W|^7Dn#i125r zyISW@r7ywORA|}YVAa_AryIvL6eokxvE|OO z)MqSAyNt2wTGy_amHN6R(aZG)08j|sfa72DM3;8S8cC(p=q{92)kz#-fZzb+k5J!O z<#|k&IITu5Cb+}3=fCPNNdqR8OZQ)_d~q()9$YY!ec@$?qM7*K?Y@Vxu$^PIdoGkY zhNBZPTE*18BDH92P9)B9Rnio13|5xvt>ihBKCW1lx{RJdg%qzphxQF2US1#jy}PN%0XeKeOG4WPm@4VUEwug-$*7~ljtryD-j^SGW9YY3 z-5-6^!?$%Fq%o(<(@G<$N3(xX-jR4j4=?-4FDBkO%I6Lc7t#)#m&NNp2!&sp-{B`m zuT|b4oV3G7*q<>6amX2kyUuJI19o#pr}tN^ zUxAUY+&e^9N&*k<4Fhk~n00hKK7^u)} zmJ-3SsGe~a?TWrJmXZY}r_alVP(KGp~^ zI)0O89bzSu#37I7i$>bg?{WUukzMh5u4$THp*pf!oNy#K#Q^^PDWsq#U8Vf>pgD?J z2>SvBD9!6z;A)omn^~OgaD?NSB9@s$|L(ElTzm&#_gQw}4*eB5RkTSADvKVXfZ#s| z!p{P!P=5k^p+f09 z$W9t>b3KCe(#SfV+%Y@HSCi=UiIW6z`hSpe!@voLK@co~1;2} zxL6DAjEuL~d?Ct;DB=o3zj1}cqB@#K{C$~qXAP93a}F|ep>`x$kqb5Qd7xr6qSBLW zdZN9d!2E|8FaL?oph?Oi^dWSuM-Ons$sc)m)klf!O|v(Q?deb9;>9cHL1LqnvtaW% zxQ^mz=!!$q)M=VRe1!c1SD>n`nF!sAwgY_B3}u1!m$p%Sn#2y#?#9t0)UV0U2sEWJ zQYf3x!h;{Wh(1vRv7$g@7pk@~WMXf>L=yzaNC9gvw`NttJnP0o?T?)D zy~wZkj6UNb5}}xqdpMn#$NB}7)t{ge?Og|uu!0{lYV@-?o9tDZuDWF-Z>bX8p0BrbEdi$y8^x1XPFNJr+|=uy5XrrVOnC2{cM^Pe28rjwRrP zsNTg+vB<>-Rql6{?XIqFY8^co@?1elwNvtAi_uikOjRVs!qC8PA12*v*{8*UyE9gD z8<%+u3l&r(`P)BCY^()1vJucN<9OOohz!Ize#s^@TRthGoH+bpT)T4z#Ec4i&NrKB z0uTWm=hHmSeXAlb*m&SvBE@&OGuu=yNO~{C)FSEOgDZ#%7Pnj4;z1g|HDeREtJdB# zd+=p+P7Fq8kp;wKPnPbxz;u_e-vB(=e7?=cyD;Ag2KvR>tY$FL({8kKRCfs@EFRHO zSZV|RhQX6{t3erWoDN-4LEv%gj(ORAI&p@7LN-~h{gbzKySV5gObhc8PMSRrmO^g~ zcT55S+$qd-ejGBF;s%@C`Ns)?qaK5xIH;{rA&!2ZOJh+UJ118x3!#v &EV#xygi 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 z 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 Mpp1-;k*?r>0a;z&Gynhq literal 0 HcmV?d00001 From dcab338f1f203d3de916eb01cbeb4c3f0363d0ef Mon Sep 17 00:00:00 2001 From: tianyao-0315 <117445929+tianyao-0315@users.noreply.github.com> Date: Mon, 13 Nov 2023 09:15:58 +0800 Subject: [PATCH 18/68] =?UTF-8?q?Delete=20Governance/=CF=80Flow=5FOpen=5FS?= =?UTF-8?q?ource=5FIndividual=5FCLA.pdf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...317\200Flow_Open_Source_Individual_CLA.pdf" | Bin 172335 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 "Governance/\317\200Flow_Open_Source_Individual_CLA.pdf" diff --git "a/Governance/\317\200Flow_Open_Source_Individual_CLA.pdf" "b/Governance/\317\200Flow_Open_Source_Individual_CLA.pdf" deleted file mode 100644 index 3294d8849dfbff970662acf0b61f7649646eec3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172335 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 &EV#xygi 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 z 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 Mpp1-;k*?r>0a;z&Gynhq From 61f80f36dcffb88db53481a652b2540137b2e53a Mon Sep 17 00:00:00 2001 From: tianyao-0315 <117445929+tianyao-0315@users.noreply.github.com> Date: Mon, 13 Nov 2023 09:16:20 +0800 Subject: [PATCH 19/68] add cla pdf --- ...317\200Flow_Open_Source_Individual_CLA.pdf" | Bin 0 -> 172335 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "Governance/\317\200Flow_Open_Source_Individual_CLA.pdf" diff --git "a/Governance/\317\200Flow_Open_Source_Individual_CLA.pdf" "b/Governance/\317\200Flow_Open_Source_Individual_CLA.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..72fc2655b7f5074aef2421fcac06e46658a27cfa GIT binary patch literal 172335 zcmd42bC6|E*XLWd)n(g8mu=g&ZQFKLmu=g2mu=gw>bljx_kHg3+#3@!^Up-gi4$>l z=FYV;*Ed(}vv+=WlE?{(&@j-lL6P(~jI6*yG2zqW+ZtHFa&gh|J3E=#I^dHlike$l z89UmU8&lxZ3EEm)8{0TJ;*gT9^Jw;`Q~ zzLldf4-c%djnQ8n82(cbaYcNSzo+r(1f=olWNaO*^{u`m;>TzBcHnOJT`%nBB&z82 zR{}aieSC(0`(dR2x3J=l()xD)@}!7Qr>r3UFMEE&zZ(8m6}h#(xs{XcPg^@<8^?db zot4M&|kgwr=>Ee`9B5V8mzRVEk?;r|NR>{l{8Fi5;K)?;+3k=U*bq>6`w?4E`O>e`mDF zx1QhmLMLMNJwrmqhPFoE^CV?#W9npv&%(jR@+~KnqtkbSTEjxQWgT*BMly5ST>HPm z-(!na(bZ3cko=zCY_P+JAM=UBLr4fV?&-C`eYze=?M@)zJHJNo`hVc@()xa0%G&n4f9!4*C13OYIlgrDeJNPD_I>O5aL=Il1iIW31rB7q z=Jo0R)PXSn^Ei^TosAt8dNchVtLSyIKQIeF*Y+-`>8bX)v9P6dOOSRat?k+HhG2o* zffBO=5^Kw68t1>c}Gw~wV!SAVF zz0RBM+xf|PNDX-nHHd9V!3Kx6g)_*@=;%E<0^B}y+c~mdCd5>>2y65bC3~T!XLScf zY47W>13>tox6t7l_^8Sk6aKqd&6DW9u^gW=3LTw&N$*LzW_C7;2v5LdF<}+Ch&8b{ zt&d+kpp&4I+?-FGZY;4b#8=v6L0m6ITrMY|pLO6Sl6e*>WcDS2JRFCl7YIry&99s>Gq5bs1q}#E zeGB1HGyQEu>`RE0N=??83Lf~;YePE9S~FwSV1`CkL$>!QbMR1Ar^LD^PxZ;Ix3CIGAY^KR7q2;XA(2b#$ZL3^zCUWa;c?Pd{FsKY5l@bQLjrXkQGr1=a z&ka_<+?b5`GpzWN_&gR9S5!XRz_+sK_R;n#hi#NUMZqutH+G6d&vZ?H3Y7h^)a+p! zyKW83b@+oD_e!JZ9LQ5A53mG(^?8g1B7y1ndQWHTE2XQw_p`^EKm-#WQP80kC4aD= zh{wgTMaD2Fy4$HOeBJHNpS|p!Xrvp43g`DGxgMISU0h+GQ$jmmRsAt$ovw0;a?`+S zszUoDd!$i?+97qMDtG}NjjFFTDFr;tOT>Z|}Qnq66% zHVC$il0QL`AdI|rSzDSEw@sa|mIx>_jLCIn#DN+Cox(#E+;v7(@2zHI5=b_9inTL5 zFA8}k;2ddsqM~27u2h3eC7K`2h#CT)nd&libbyeZ->gHN8X!vp?*uVReg2!8K;4wP zQM%p^^(=sQpuo;2z{;>X@{0BTT_{x0;IF}`VXY^K0%`P%%eqLm6MR^c;Ojl8X*YaG zE4-|@99u>RUC-Bwz-N0Ln+TCj!%DHbD@2AeoPZ*Z56PJgH869#S89JycA^-E8~NTO z?EA|`CDYgZ#zA6r*Q;hX)}}~rvcz|Vz1uF?EzJCIqIm4Zon$eHH%8vP=@+NV8YSi? zg3C`p(dYA8kqoP;>2i(GzEfgl$%^S~_|JvQl$;{1^|Q<6VEWJ;{2OGz5_gjnNEnyi z@~rWZR~q$Ii_E?oFDh3%`-OQ51dblwQOtcN5xc_ACi-cnZblIV#C)zE?nFL0saDXR9 zo`T3L$Q-fS;@Z1U^FDLvn%+8QU0ml#AV%@eaHcIQ#HL4ml8apA&^Z*PJcmI1IkUt3 zE04o!)(uP{wHkXhH_$_!7}_?3-bER}N)~itb>T3K%7H6<`4J|NEeto5_&rs++#J>h zRja-qI)Y?S{?1n4b5H@;v)gL+ea8N-$vx6#lk4juXrxiSjCw8@xZ_Qg@B# ztK2~LC$#uZy^y<>h+}Ro?93#7X{U*vD$RmUX_dTWj2;hs99-VAW%u(X31uaH6oyKQ z ztYPq`3SY{vT9p=B8k+rVZ*3A}aV%Fz6d9zn+J?(90|DvnG_ST!W>f%C^l8Qex{Hj}@9OdH!hmgRaJ+UvRRWECS{ww_GZvK~5qt z73=pc=IYd$DW`E}4QrYaGfHo#MB2!Xzi5*AEjZo{cXVl&jFDt!wQh20Rh{@TItUIx z!l>2$s=)KO>}_LurRh1xNd#t?HWR2)B};UR>DReh2TI#~(ub!Tp+>LYanUQXrOk@6 z(`&inF*+Tw(F(4iGlxw>XS$}ub!~H6^N)snKjYB1yfu=FycLofDm+Zv79bTvDkn;g zi50E2N=nKjnCxOkwDDE`BStg_5Uq4oW3y}7Lhd}M9{)c~I@^peh(nMFlNy+HW+K?q zPBg`Jpft#mqU020ABf8$JSWKDuVxMe53W?9t?3F9k$?zASDejfYDT}poq>J2 z%XUfz4r>ktNMU!hhCBR$j|1sa#j}YigEtjuv7$yMtnV0ZAH;2x88D73Z%0SqC&l&w z>AA?5W8#87d-oW3{)Dl%0BP-MQc~TrPaF;w0SA>OjW7*wPLb~)1_Q&J?P8({N8v$t zy5P9Le0{!}&`x50o%LDs16dN-s%{o>y}R4Zf&b*&!~Z-16v8}%3u=A~L!0p3X}|Kz zk!w~m6+avBH3$iv4?Fr9jp@56r>uixDs>;CO=ryyY;)^-_}fml;xvh1nPMo(OkOuw*$5BpF>os5+j3j589RgNh`ZS@g zP!Dzd9_;=!Bj9I)!TiR`oY;0e&Ak~Yq?$TWMoqv(VC;N2p- zm1z#Q$_^COu^zSDYlNF7?jy#vTz>BuJJ7?3$DdR(S&?BdxHP7a5q~viJH7(fM#UE# zgB|kITVyta>qDa$$%Y;^gQx;6?6y7-Wbj_KER#w z=VO#G7oyr)nbeC~F4zN&h$U^G=QvyUMl2xIfzNwj$;f#`NtCk^JlNR*qwUx~VQpad zqeG%JDpo@08^rgxRUeg;6+575JdB)3htmy`H;rn@N^qc%p=Gmt1Jg*sO}d8p8^QA$ zg^0T%a!{H#cfd6)@wZ5DZo-%+vPI4XQ^DTJvj)5eeviazz1($^WK@wR51>uD@%;0@ z&xKm~`2bJ&^+1j6rS^7*S9Eem4Czc4Vn(iDSSSPR9b%0R8a}L7 z5yxTEz|Iqhj%3u`!x8I*@dKh$f9UVy^f~y}))R_gDB4Qyc?V~OO=KLA(u;(x>ry!o zVrFGb^txVPfwZts70tAiCAyK^B8gZiloGA!_V4cS#f3pQz_Leyh~`r#_j9I_!@u78 zQ}7YhFM#BgPly*%mbw#E^0}44A2YCEPC{EWrV|zCeF-_iO(?{IGtEggswP%Tz6Qam zPL*wo92h5|+)w{F)uP^9bwi9z&COGg(FR`Wa_sJFnTyQsZT&pcvO!e>SncVIcqltt zzN7A{;EaIshz>pZj8wZ!z%;<#eWFtXVEnZcRQI%wl|f{ta=`#bVa#@~6$^aCsRL1zG-W zL0hV83c*YLwh|((PS75EeU}0XoZ~kT>g7~-?d?%F-q4*n4-&Uv!}s6XYdXr5n*eU@ zTHx88nLZBOTN;jTY+NL|jb+6^DME>s$B(&|g`sWcQ0OC>TPJhwnh0So;h`9SN_kvk z_N6TFr&{;K8lw_hnUvL4mtD>}Y$^BEwS^TxjSdS6>wBFVkh8xXAZ&ERdr(s`+;c?- z#+#^}uieb-nhfZxv)Vj8?XJKMKr_1}VT&;B4>o${rPrH0DI(lB%+fF2yZrbR3A@QP zoM`yud+%b=exCT8LpFBl9Je0`+Tc#{GiXf9X4DDKz3?%GveGfhjQ_{}F_%cf z<($rE5etJ!$wmarmCU?_8?vvpdKBvySrlDOJs<9vGO-tT(1h;MCOLOo19`#%#MKOH zK}C&D%@4-oPAC;y@m+&y2B52ge!H$r4N9io`!EIDqwEpaA;_W~rL6Ge%1!|@=BKU| zDivx)Yj%*mh&|nzQfRFA8>ITn_>EG>hGPd4leYZf=0m307YdI@v5zOgns3ti_f?lO&LDsq=;+~5 zOUc;WBLKTY1NkrDKPwK2)wrb+}tasXAyH!TQYXw6JO6?`R#0Nd|gMy#(@c)+%|IxONbPJoY`3B7uyu5 zecDK~C=T0#?C~TUs(-IDNxN}}2zAzWiBmRAk|nRjbp>olc_Kr!b$6bD)-e38d>fuc zgBc(EG}Q9nO*6-ox5xo$Q)+0|-y$1a6bUc!`MqxANJpNMv%{^OP(yLhB6=?(^p)Bs zFwQP?Hub}3{ZMEh)GB3K$!F5UWMJva2T*<_X_roNnZ*R>{4Ok7dsvckfk-mDBa<`m z_|lsC-KpV&q!ZL%$?Pmbz`Ct_OV#Y?I#{QkTM{7m*e18|x2m#*=MLllo?=sRdK z*)Uv+y9&V*RlbBRQ)D-v@mZr`m>Pdb2dvtd0r;c1ed~X z{yii7{T1KIMs!`FQ`ZpEu|VTMuQWlG`GgW?HM*3F4cn} zfn^Z z@yZ)3O88V7@G2&UrEsvRK-Tz$B*B3N+Qfe^dFQ$$Cj1D20wdm{hz>qja_v6H{E?Kb ze5GYKEFdvM5jIb5{amQO+**jXilDo}O`S^kiy)E|ax?2@sYgbpmaa}^ZD;|y7_iep zwtFuZx{wfN)}3=Cf)mK`DZ+7ioYuB7x1+qBSNi!>t9162pH5OHWym@xB3ogC0+Z@- zu?T?d_YbzZ&><6O+3<=-ZjLZ|(PRCHDd6|KNAd^f<5K#3AVYZ=UjXEBTrt={eQX zDLuCds>yh2I2(ZzXNyR~)J^F3zzp*1hCd%MGe2vxLEd}ye*Sjhq>ACv@T75Sc3fa@ z4S^*Iha`k-ChXbw?tukU(Yx_j?cxYEQ6e3YDtZctDH87z`<_T(_LGk zv^2rNl9k3?@*_g890T0=$_SC6VU@_YqrG-GKe>&%^7`R!9V6*WJLDS}aWVO~>1T!u|k3r87oD5xI+UN_1|41EDIF z+fgkLmHpe89O_kS9B3)hxzF49fSi+78nOi_v#K6bctm-+VAIY`XF^AVR|*gNbn!%Nkze5}qLIJH>g;sXkF(t+GjgG# zKv!NW8Lbs69n4)^lewe0)rACN4kPjD@M23s zNBI3frnn@zR&xFzq}HM_b=&)?BAbxUy~>z{Qdxkz44p0Etw1D>OwA~?%>=tN1j-w( z_(a^de|<@vQ}&%psF)jKIsVDLk@KEhYKU|#@uy$o(|PbyW*NjR{GmJpyuGzK3{F{^ zXa}%p;j{3VYoTaTG}vAZF&0Hv_K-u!!djKn9jIiR@35d{9k@Q!Ns9A?;NY4)ucGt$ zM@J-gnn(v=i}c;eJ>;yE@80x`f3+H#yJ$Hk)`LtWIlKl$tY9NycGsM7dl4bwX`u8( ziz22&#S$qZi@tMlAW)x(F{2SKArtXNT0z*wq66hEmKE%){cw{#Y?+S?wV1Pl znne8CISMX2tCw))vGo&xnm-BQDYGmG-DJ!oav5~xA*AFWunnku{9dxga3L0V9+NAX z5COw(e!3mIV9F3z*eSJb})!Bqmz}s*VePcR51-Dd4A;EUdrlEJ*7x7kU z=tt)=rGu&%D3o@Evu*(@_?%|WHJ)U*OzmP)hWADqb?A-B6zSNn4_=X8=5bi4Z?N*; zYwZ6*EPpw|znByLKcM8B3kWFwUF=uIr~hZ|AD{V~8{q$i5dR>9Z+xT4%)mg)!h+Aj z#6Zi=g3rvt{7;FQg_iZ3F?>TFr+Oo|X}xnT_F}0t*W*8_WN0zyE=h{$FOo_}@U|{}O2O&v5=Xs0k}GGspjznp|?P zN6>WGe^ZlCcevInNpTu}h{|(1wdFMquVz6`&vzpQV6-QB&n*j_37yL~?K()D}|*ORff! zg-V809TrqPOn>oVg6q0$90aQH+HJl~0Cm@dsyVkhebiXKG=Iq)mf&52Q90OT zKA*}4Tz~^sER~lrQPArOg`Rn{k&R(v?BibXqIND9$8GVDmr{P;_cEDQ>~>sw$fw<1 z@7bTyyC2#Hl6Grj;ijl5y%K_33{}-Nz;D+K{pa~`=9JU0_NayCSZv~u zt;`IHwK*v_RTD%nd0x&XQw5^8DwKtP$o;ehyH%nI%uz{V(|>hj%{fkuY&{^O9yGR4 zY!IkRWiYz+%m$CnxWU*YfuxqNaL>Ea0A@AQ?C2ngvp+tW2YtQr-X`{`ZCbDT05ge2 zLP|K=ubHGS#eqF^x8Vm&`W+2r`81_v(~k+_iUcCc)`KLYOnX=3^-_jKR27Rn-$a+NgkfH`9nbjIThE(e(moqbT>Ie#c~jX?oSBVaSk1N1|Nm2f_}>?6mFrO7wh!b039 zWy>ReZq4?aQ`>*&sSFmlL;<_L{}akj2vVyGBZwoPr^tL2jk_UaZSFcjR&55y%=(N# zaOn#Od=bef`s>g1JK<14Om01v%^0n5+Ss5Z`sGx1>3O;dwhCRu&gBy2vIheGK%DbI zPSS&xgjfXTXA1U+#Vd7o-amWYw^=zjH8?gs?h<6-HbABtOzB$Y3xn*!og~*MedX%V zTRr*ysfxrC4qZBQBN#qyz%x=q1Q3{P2jTv)nFT`=ov^*ey;-r-1!Qn4NKJf6Z?nY3 z9LI~S%$g9sYQT|)IYQw1!!h{oKBbJOVyXg2rFaLk9@oXx(WhBc=2YGraNT*ABrdJY zbkE$Xp-H820VC7j)4;`en#cG|Q7VOLU_3|R-4Ik1I~lZjHI5#QVF(JV>?6N%v)G>E zlN#JKG}MM}OW83q)dqRewDSBp5=Z33PzJ4V#0L2ucVrtA1ipa6v_FE=_^YcYRHj9Z zK*K_)5|3-=!cJIR)x>#A6WV$GyhiaJTw|tTIxJa?+r=Y?8hBl2c6uGh4yKzrtOe(6`;))OwUo-ob ztojom{EcF7Z(L|xp63viGX`;Yt(jKUUS8rL?ylg#w7zYPWI-MpHrwlOD^u<&)XTKH z#hUO(3H`)KPS6ahD-)oI^$JqfetAW0O?KsE8sp8})6{gmQQ4H@!T6_JaTDr+`d{YL z`;=Z8^WmAV3aUHwoxMg__cgpsg__BtY~8vhg~zGxsi2Op!-*h~M1v00MA0d;#|D>| z{w)lyw((k_3)g1QC|T*=CfXa9OB#15j8a~!*ldRizm!8p91^hfXDRC-^u~s(@PeXa zyU+XKltrB3-9lff!-ly0QIl0z=+Hz!I1!<@-i#g&KRq_alM*l+84?TtN11|mmQNKe}d$;T$KmNlPtiyCPR!ep5- z8ol$7E#@~95^)Nw{}>z9LYLgw*^TI=*I8YR(5M{tmy83M9Z}m-N#GoV$FQLdB?lRd zrFS6V5=Jtsf{104>h($bXs$dCXjBz&FtmBK<@D3znCTs?_)R}AB{08ysJ}KXMW_lb(Gypt2Kf1CO&<>|G z-y_Gzf8iyp7zR>m0vM0*Jn> z>NHCje}wHuJs>W6LJSO;-)sj3I~O=ZqQE=xvG^x=t5Jz_7O$YsX*5u(zYx?WESvr$ ze0IbZ%V1X3(3(#Ew!35?>K+po>CFDEzMyQNT}&%S(pi;>TdaaXHp`Pt5UUQNP6B4VHose-R4gP3wMlcUF71zGp zi@cG&OC3o@NQb))W28M4P97E}WeD!(5XkfUf$6edjRIx_YzeNytCrQzdUTE6NoZ;n zF)>H48o!j?>VR$~#9_?445_qFzwTO!DRgaw6llL$yr|ZtRV>&WP*mxikqb-SypAi? z^!!%GwDbKkz_zEu0Fr=C2z(WJDH&{ER7d7TlRE_5!-=*$8EOUnq)8jWE%RQiC?9CI z{?TM=E@I9(n4nsL4S~C3%maJ5dMVkzG_u6Bw2_}%U@V5!EWm5>SF+DXTW~3kN~T?m zXOh(bvd_*{7yCOhD@4@7%KWWbyr%uI@4PM=9f_cj__A(L3pQUOI&c2+b%}acZYNzvQ47KWY|LRT{ZKacA>Th`8m;!v@H#yBIH9 zo&KB!@(Bd4DtX3*4M1_IyC*{5k+ymT=eiL2@aUdX9XH;pL6>S$n8Nt&F{yk@+z@Tt;`kOmT6RqFjcq$IZmh)pp=LO(V) z;FCnQ_9Vt2c;QdRv_Y|0%2qvd8K_4KtEg#w&2v4t{k(AV>vDm2Q4&*E_4-GP-M*dpfc$^uUHf-5|$=E=lSmm z)3nLXYS-48g$-DACe#jG%Dm*bg0+=R^cAwtmityj*!4^VbR{xkDccxbQAniihX6Ox z*@o^S3DNM@j9?istT8s}lKs)_JMx=g+A!|#`OqrZ%dR&&5zCcu^@Go4Ss?CSiq02) zj?R}*o_};+fC0jfpHu{JuS1t7vaxed!o?#PgX2-J7rR#!wa4R2@-1L+$e_^IRtGL1 z$t;m)mpdSy8XoHV0Je73zh;A!IoHajR$Qh8^ z>}lk!c?A%vrDqIK*YWhQfOHKG38r%Nc;mP?+C-gv#EP^&w^WaqY7*5iG4Bq28b#Xo zwX=G}Q#1@%TN8bHNfy`b!6rS2RluKNAScq^d0P^L_M}7GW(`VZ_7(f|y+_r`C;kFMqkW9E zc@@ZMpE?j)?YkRdt{&G7D~^VR_z>&WOuZVQq>07qJZAZYJ^fDj+Hkj4@WBwrmKExf z5cxVkmvh_V=OrM?B?H7iI;L7|jNkvvzAw3l-3c_Q8tVu|QawOv#F1!=TK{elDcUOy z*`}4pX21)`OY&Az8S2E>gw3Ly0R z@*@qY%_|(Pkh0S`(pJ8-qXWf!9&eN#foob^p18!a5EVf0Mtr9&=N{eCNeP2?>fZ;5 zQw;|V@7o88DMC#Kl$cyZtZV}!eMe|-adR1jB+s#j#!OqujwEpC@j+A0%#JYE&Zkf< zFheWL4*6qRgZi>5=d1$tGXC+iYYf&J`BubEAfbt(>al91sNS?UE|r#bIJ~bl8R~~x z8JpHoy}j|VI24!6IPHd+pbF`Dh(dF(Cz=2JL7q%0362-pWoaW`{i)8BFPNMbSpi2} z(&mjMa#LbTha)`=lw4X#6Y(KBw$GuGvTDh;sP9>UpQKpFF#hqu_VKyz9LNXus5j%y zJvUgeEU8_!9b;_TC-MLz$O9f(Hjl}>-k$HOmxtT~Jtr3t*1&3kGmrNS_eLV}nef?O z>VUhHNS6YIL}>G$bceI|wBfc2;^k@7xR1_8kKLc;`o80h9_OW)yu>xQolzvrCu`nk z2XAH%=DZZ0?s00djw&&=V+znGF#X&L=S5N!M)r8yrJY)*u_V{Zv>k`bCBU5m7f{$; z*pRev_}IR-@us#$*g0tp63V~2Zc%tSjn^EH*rrU@>5LXsx`UznH+l8*yXw9DfA|!w zE$=x~S87Es;Ze@(cqS@*-)()2H*GHkH(%Exy(HW4qRWGkM$d+TVOh6Pr{gD9^i*b!~b{8cY-WPGB#zB;9Hs2uh{X zgdtGr+N7Y5`7pu7PArG3cKdqBM$EZy#4oD@rUew4h(8dc&*g`jLxTfo9x8?wdJ6 zT-gKbhOO*m@Q!jay9pcx1;2ROJM7wnl2jL7_Z+uMR&q4c$)PD61F9NQt(s3A4 zc*ic(^F!a|Y{}RrXBkI>)J&+B*0NAdp)hO;5OkA+yur_90#aJVUK>8^^TK+HR8T${ z9vlR1w3l`shbmX;<1W@D7-dU=Z}^G8;)~imqOY}Uf{TQ(RQH0a8`S)($3?iBTR=%rZL9C@w)~!v z6}Z$Hl1-N{({IuIN&wECLp~dWrHmqZHw7hiU_A4_*a*{FVdnx9TH(|jO@$+9h?-r$ zhl{InR^81=?cJzt^FR`o$l-$-O$7;T!cP!bhB(sQRF!zpi#CHiUc`XVi={?OP6BOI z!ErX}F7RL~Rcki8LrZ19QromS*Wmc9V?pNWBwj<>96=h_cgG`+d&HX*k)$7Z;- ztN=w^H%2Jpycho|V|@p5o0KfeDxNs1Fy8gDU$T zxlk68p-?Y~1DZX^x|4qfWYf7$wJM7!ziP+}8!CDK zQLBS1?&&)_XgI#|ZeP;%XvB2bQw@f$(5M)p1eKZ>1S+FF68350M3|x=;+1Cg^dun* z{5l^aaJ6W25yOHJpPApni0ey^3YouS1vl=)f|^!!1D0cqp5S*g0^wJkT3Fp`Tq5SQ zKu*qN-(5$Y)|LqklhfVLmvEF?yC}oh8 zW|$$mDv$!AAmR%bUK=#!hY$|=#J8k!H3lxxxl4e=@f57-CQ;!5$NJ^jUWehCgXukxL(9 z?;z1WX4eEr^z~G_WGnq*8D?;7`y<1jeKT^B4<;Z5!nqQ=k&~$XyoK$9#+`#ETVRdN zt0bxhQxuVXTjF-h5Q|nVErKmK!uXYzxgJ4;BxUml*M7`2TOl$Sv_f!i!L(WvN-=kL z_Ut%jH9D`%E=9B{qed;jOp2{|(Fx7Ki+xal)043;p>N<}0@pTIA6E*hk%$p}0Ipjx z49ost62GY^GS6IqIb<>zAQs^M42{!H?HW!iP|FiUf8bQV7& z|88x(Afy!e+yD&mvfCSaPiZk6K8zD=@T``C``Wb;g5Wm&of9VwUoVq0&MdPl| zUJS2|L{=3q7wKR!rqC|pX|g&AY(3b?KJG=6z~b_R=(@{F+yaz#i2#nY>gFHj^R(@O zbV5{y1(-C%-p)$E|NBk&Q zGx*bWcWnFsE*SpCI@jsJc9|sYw2MwX3~iIr92a$yVJa80F30Q~Hn+9UCj5>3bK~IG zX;c9;1G)f1L>QkSb~Kh%NOCC#VtcxQNZSQ{;Fg!)@-8&64s2M6TXaDF^7C?yaBy}v zfOvw4BI)M}P+a2*2!ca$FDAd3%(k_iT{5}gX-%ZQ#kiE-jWxnm#HNHyYbJq7Iw_cm z4Y(0b2vEsfdJk6%Y0heZ`Nx9vv8|d!?(gn9urnmtQrhxEWiKJS@Ns}Q&Aasnwx#-_;3!a=x#ojH3kwUJSCL^F<-_CsXV(?j z`=1HThr?yxo==7zue?`yO|ba2_SusW#e4>DMYF~;MIpmI73lcaPk|!FcD(eqI;`v~ zh?4~qr$=OGMns-;7&j#NJRe4lk3lbhUmn~7v^l$~cxT95@}eC)$k^&C67Z}(kd9`E zN1;SBn@QPX0+U&5L&iud2FiZLZW3+z_Q@~LMS<*ElaJKged!Dc7&ThQF zJPp1+5NDJ(CG()1879bGTce;1!wzsF(YYE=E2OK*%cN}F@%u}C0RtX=+WtA z%M%&la3jc*dHli)SHB>m91a20Fw0l`6>xR9AG=F}n2| zbetPIox=r=9Gsj(IiEFHze5EqKU_b z$GY%YzLU}pq;=7Ssk&<~@kq2#_GR=!V)#?MM`mU}0vF63ehR~_8Xwmd7PoBge(K>5 zoCE_{&dVPtz8V=(&ZV8BlsOij4v`@c9RllP6m#(Xlsgc>-<|yEaeTzMO3^hp_X4)gf=AhT4q1MpdNe5zyolvC?T= zWAvoq?{=@Rs7fMMF>S)}+o{DFnex_PDm|!I-HU()tNCsQy&KON3)i?zB%xnT}^2hizyfQkklmTL$g+!0?+#wttErB%6o{@m#^A^oOMDHsh{J4)a!-;XfQ>N5Yq1iq^N37xA}rGmi_Av z)V!AzBf|i^%w+kA6NS9|@J|_w8%Yr3;}$xNGZL06`mD4hHEkakNh_U&_Y~<<(m^Tk zP(>6tZFprxP3v;~Aa{}Wv<*DCS4PN8?NX<}Ewoh>`5hs7dfF75Nl&Gg{@Yt!2-=i;4`n`mOHeHhPATf5hyJ zjgX~1$RA@rTFmjn9Gn9}iR?NpE}!gjn%=~`p^LsuLq1KT-y371$xa@Z1P6Eo5iN|2 zV7%Wd7NqcBi-dn5nWEGl5vEI93c{SKT1*86iYNi2cIzhh))E=2xs283zXqyN3MB|n z^>nDsZmc-9va<5`DOgR8g2SF2q9qb zAE=G2GKN%VV$gE8xXQRV(}?4H`w;}F)Q$P`;9ddLRor0Y(0v0nwb`cjh5{;^d^iJL z1&;zb%!S!%#?)R&8`;u`6RgE+@TRmpXnU7{3MJEEZz!WadyA%7gt^l)P+Sa8$PdD6 z7SsfKs7yKFxj`ya#5wcN3EX+QCQ&t{cX_C^c&)3y(6R1naF+@jopFXcn}Tq`p4{Se zYi8`4lX!&+A?5ljIV9Q5qDk4^R7-P=FDK;YHd<$0GBf9vlKBKgmoM5!+fUd_=ZKbG z7|?UUsj0}TF&1qwH&|}+4J0f56qz+zdQ2D1Ht%(Ijg#R{flfY7S0TnR1B~A2PmmtL zM+_zl3RAeU{?u8Z-VvbdU0I~`KT*y*O@e#u7A+y)M<_+aa6L_>(=-+Mf#^su^Hccr zSJ0r0HNp`Q>cVxNQlk-6I=Wl1Y*^77Lyo7W?_9erjNjs^ z3>IG-YHEI=wiGsk!)C-^Ky8xldw`=5tL>I(fy&>K@H-@&;@3l3)Vq}PC$?+_qlQ!! zo40#fIbE*3y9Z9tVvy7`-DES|EUB~*YL%{wz?}t9o7e8cbco0NB8*UY1Nug;O^mmo zeyVrpm*oQP#lXB08;PqhI6$Uq}3&^cQ~F@@jI`YJ-M*YuCnrK1acQ;;VmU z2>v3ja-vB}BLInY>Qo#%FR3c8iddL~w&fci~nLC;gJWRIeDvq|BWHjLnhgSd0w&|UIPa-fN^73xnMk_25= zP30Nk53SOluY~GMU{0+zEWLp+QX z=Ty$0t%NYK82b?ncQzi-7=A?y5oJY$W&N?M6PZe2+T2VJN0<|wr=$!B`jeyi1cfkXVd=Gd&ai{bGa9jl!0mqlQtGj!Sl|*)Mxp#ZAE0#+`KMOZNF)M81kuC!vJ&Yh2`A@5(F*Ighlb(g}jqas$ zu&P+61J!1*&@=$k^Yl~euMw{dFr~A6GLJ}ojaftur_q;8tC{Nuzd;P-haiNgbnes( zjAiW!M{z$3%m`Cy#HJ88bQ}Rf!O+17p^sw~N5kZEecmj+QNXX#kOmiwFAh z6ts%2qHhu=H462O3br@!z*Tg*9ICZbsI! zr&Lum)OaDP_N6cBeIxc6_y>Ns5H|Y3%L#W|PTG<$2Gr#-s^DtJTlCacev}QU`1|aY zO5kBzes+-b9)hO)Iu85jyNQYb5;k3c=n!u^xv#y?AML;>@$jIg;Jc>w^Z^hsAR-e5 z(Q-&KhFBx-YYiM;HRb-1f+KQg$S~EP9T2<3Oiqvr>PVKrI`tsFOzyPx=L7v(#d`+@Z zp5R#9${&#mi5JG8x&67a+?iFe+s}2g<4%4PH=SK+LoQ&7``>~E!e!T@=zO$A`0CQr zE_!AqKSO26<8&MF5r6V`xdxbI_#L(ixX|=;_PT7cOrD{jvar%D_c^_)tqtv-YCpw# zTL$mw#()74cnj=sor^9oYT0B5UhlXRMv5|e=(iJs@nT_@C*~KHjykM>&=SZ7IlqJj zCFHVbuSxE|~YH(TBVsLGGMP+s##5D=+A-5BR7Rg@8AzKiC8) zsrR?)^~kjG&HAlbj#L()tfUcuQlSOZfx(V8GC!7%vZSfZv z+!Ndfhu{vuU4lEo3GVJ1Ja}+-3+^t#-Gc;ocb9=T$@iRl&+pZJukK&3Ue!!Z@0PV! z_g=kr*WSH8qcIDYiK=+4ch_vHl3nI>ZM1ESzYGNs^K4P*pp4&OZU}& zai9Lo##?J%v4m9FQ$$eW#~G2Gr;6N5)yhT*=o?PbmQa+%qjw5T_md1^9g)1|A{}JS zaBUJKfn(D|J)n=>#v$Ypm?@68sFC+xDJFL_W*u>o-KF1+LB-VhtUXoj8%&>H)CQyR z-D2Y*nP|jvDRV@^dl*pwcX-5Qd6|C^L4H&q`Qso2^b>W-LVYCvz${yQNAJw6;#u3R z-ltYHW$R&WNT&5cNsVgh4TMPb?w%8fEHl}O#Y*a+bP@U=0E^~yJ+Y0#?y{m-I^CBW zzt25V*K{A;)p<&rlHw=uCY_cczd`e2=tyLa1AoLUXx&jE<4wB|PMoTlev7TC2R*JYv%52qmGHPgE^ml_#=u2y=Ahnt)+JNtw)n25W`Z3p>h&U2;2Tg zlzJ71?AJyB$nZWYTB>Man+SA=Tl#^qMT($84hes$Bg(ya`vb-RbeXP7ZxnTyLxonT zVl8^9d;noc>`Fuw-wy))+!jh;t7pmeqEGCl**B>)H%G=n%s$QRZhgES}2(-nyWxM{N9N8YcYHi#v`6TIz|VLUkRIK$@!GKMd*3{|%VaBaSvq(;LhSL8vp>y4LI-}q zoZ6{v1y5LP2El!j+h#u?kZ)6lE3?YEY;lT*BEI(400&x(Q;vWQD?)EkEP9@u1(*Do ztcYOVvQw&7Wp;O%)1Q=04vvJA_!Qxj5u39P1@&#cgbv@(N2((E_kxtW3v(|YC?V|m zWbc2NB$EN~Vo;^!KfR>lbr0_ph^FqMBK(%J0LK#;;xPyA7qk2a&?1wpum8fuW=J;`8Ar!vohW@ztTa7varR zd4!5pclFP0!;*YGJ*yBN61wVy1{LFQ*80B9Qr z+aJr8t-; zTd#LyyF0zVz7#3(5U>L6t5dwr^Tax4zG*&P&moaV~k zDi|#o7GPFfbHpFozqeeHQHBRd zLuH#9hekb1IuMm$itC!xpvgD(8%PY+Mn=G?B--o6% z&^Qb*Hmv?KSMLe2VbO23JTh!Ci`Z{lU7AcrRcGhw)~sA`w2oQzWJjQj0~mU^uEJ=Y z$R2RCK82>pvu0vGpDRcW*W(>rL0%iPEMq$P>z*iO(l(cZd z9*ex4#=2N^xbx-8X^$pCp)@!2^>;)~?_^Ce<%dKbIHq6S8CeQ;|8hwFKxn0c=*RF5 z#pTBNLLrD^XWM|3`r|eQOs3IO8yl~OhHKH;E69Vc6GFWfwz=}uR@nhBDPKSe#Himy zeZ8$J@m8@UqsK9XYQXxf0zcxgiPsvRrOZiuO7(|OnSi;JSfz&iAY;?B9gq3vC_57> zrtLC?Mm_lAI#7YP$j5t;#S2FkZ+^(d@jjz)cj}0u33k#VXMsbtA@&YeO7?k!U5eOG z+;|^v4#X;VPACI!PY|%`s4R`wo9v(uyfH{wzah8(E=j!+Y*J6&!nPl_6B$-pS{xxn2cHRH-9d*Lm# zpQue7TXgiU(w=2n7_`QZ3PUoK39V7GUcm4drgMD%hqtj;-yVqZreJeJzkxl`?^q=_tj28;aE=D zlzlu6&$G3b_XM@jk)?eVKl$9Fe2u5jWXO#iLG%ugfmc^+v1V`#X|ytDG|WCmWWuEk zCW3GFOm{i%D_gAYOBwmWwWjq5n5DBH<=Uzf&QiRNVz^?)UG^F9aiL($hP-0`6b2z; z&Yz?Ws-@j)j3cwtGpV!A;pi~)oVflWY!}AtZHD?zN2vJpvK=0eK?M2Oo*b!H@72}O z|Kud)gE_2zYj^PhK}PU|w9xSKx9!_nv!j=<9=mt~WIavJTg%_YE5l}%*fqA-k0Hu` zhOlfyD8PdrBfE6iO1!pYTakD?f=2aR5mLp!emr}GJ2xt%o}0!OG4*Jvr`!6_K_QF{ zx;DvluM9e*Fl;<4+{tAVjkHQ`rQd%GTB(q8Ya3;*l7nQZqV*A(fHaD;Uc|`C_K9u% zGOYf4`9_n&DE@wyIHGWrIY;^^z`zrYL&O!w3HQ3@^h=rORqN&oD#Plr>7!vuYVrrl z4g*^m3k!u2q%~?R{X(QdI@T=z{k&11nV7c2(|S$WRkyYTqc-w`?`q|g7k$@7!8HIq z38;Lx zaLE4qtijRFeppyJxc<+mpViO05v!c&K1?fb8~Y+ezOv3Fy{7y7MV zb$_84r^=UHyW`PoNx&-2?^*{Y)t9G>w}U;Tm1NS6ZtHOUS4%cU0_8f&{w&jz^Y@DF zKt7%Y3NE}^FEg;s*nHu=DXHeRc0xS@!wH^q4TmiQY4Xfx zqtej$eixLCFcWXpLa=T^h&~oL0Vms(8=EL~hJUpkozw@V<1-|ylR0YP+u2Ej-;v?ZYI+p0h z4>^cP+q=sH*t=@lrDIB{@S0wJs{{o}M53Y$wK5maz1zZQNyFLG{_+#{J3HBI`yfYH zmuaU1Y@Py2?eqjYxwrEctnl4EfbxZ8J>M$E@Ndk@iDaz~z<^R{|S z5@H%5j-)z|(T_a^KVmh-$|=iD8OZcYus(eCIx1k^ycHqtxTyH%h#$?mp7wjWaL;Mc zTF8|H<_F|bFJ4so9 zEDG};^$Mov_+75ibG3J21Zy9-lH}1C7=u(&xAIsk4}5-xf3Ire!a?y}1i5G7p#l3j zkNls%|FX~rX1BaFMGdQqNqOke?6%xZS1sjQbj24Uig4lZA~wNT4jijzGjMP;d;1wM zJg2dY*dQ#jMv4c@(9^2ye~jkhof{IEL#4fxJJo?+oD05Iyy@;Bi|sG`K6v zLJRS|3U8N!$+JLfonw~_{5WpBQ|92q?*_WVFgnKdl!KAP19OdNikgS_VV^*@W37&- z<@vw69kH>Lkm0;4buhOid-Q+hgll#hMR4RE++>YDND)!6UfbNyb%}z=c8{XqKI_X8 z3(O_$UQ_#4K-FER35dWt;#D{NrsI?CKfA%G3VhZr!#p`PKc(LTFN#?qjzMj-oK9Q~ zGmbm6xK8Dl?dj=9yPNbPt<~c=+6tvsDR1xbEY>e}p z8~5jTzU*}}O?*9*vVD(D6dcY+4!C)e(V6{lcahtDJt_St+%&W2a4Qe5LHN1Ok-mq* zsmJ!vKc=eV9H7(Qqwd}iU|F^oxv`*d&sY!;vK-c&rr^FiwvT)fw<%f^S@Gz0Ai0lx zr;}oDtlHm#Iu*QsBo~n}V*ZGl;My;>pFlEtZco1^r~d{O8V_mvKl%0lh+h3Kzs~lD zcnOYF{r~1|JsS%U{P}yr{{;{8uWtVfC(pyo`hWWP)6dJ61T0`5eG zp-kCiSV$61-D{hWRpCH+S*BxdCaunIoL{AFf_nELh#KG+aBlj5BJ9F)?v)y(h7H5$ z4LxbN<}xmbkTy|#_eMKkh1S{!3x?463kbZ_1G znBtV75O~L)Y4Ez5#?i~dBp^qF;{|3&cMnCmW{`!vpIoe8udf+lzj5o3_UrX=C|RY= zP5;?}CcyYsGW3HTq3k}RZ9tddSc)026XxrAyS)AGq2|V6; zG-eAJt-uh=Wkdxg9dbZvxt+s&`aVP~fluLBP||%16F7ll0wbz*%gW>#r6p}2^R38( zRjslybqXgb_3K!y-kOd@R#!*5K+XqhBf+~``*u29lC6>CpnkK_(6%KPZetnj>>5Nz zjt^nA50YJx@;&<8dDyGjge3so&*O4jX>wW10c=b}NsrIl;Ps+qu*hH%20r|^4 zN9{7P;IY57<+K(R)j4tHY(C{Y*JjE7`Pq`qxJ_51VQww6SUpyC$r?9vq}9xDK0nKg z?F9a(3(&~*@N}u{^foBG*9L=!!S{7mrytH$u&^~_S2%&w9av4Yx4U^uV#SDu^*=bE z|5&q$7&@8!#pE&xt7(YJtJA4k*qAuUo46_4*%;a?s>rDVnZ!(-zJLSo4Q-wO)ck|- z{p+j1vFqZtU?8rAtr?I>+87MzwQ%-ekou2E`aghUW^gFIotmx1Uvln0_}_nlkN*e* zyNiE?^#6xX{D0dW#KHQ13m(@^(2e*lge!3l!g6Zq&@?h#b2Ei`_foPUE?9Dk7B*}S z;6Px}dpPHv&}vlt87%sqXMZ}=$ZL_P)s?mXzNRY1fpx#pYQX*Y{0q@It=?~2_0O~Q zw>R>Sc0Ls$T5-ez0=6pc#H~(tNuyhmV2s5;sD~C8h}M_2zo{nt%d+m+Xw@mp<)r|! z-xh~!d}@_?QTYB1i~f&IE0?IEA%za&H0PE~;;O?qKerce7ZHgRGPjlWs zA#0hVwaD6{BB+WqbL+^U@z4lCZ603GWDI(&>@BL>CoFPq^RiE#`SCbPb# z4$3ah))j9YUSf7yOmZ=3KD$}X-D}X($(>wr0ra)E>ugEUk6mMfEh_7SEJQqyv7=_= z*9jJF4-TlPAcGl|$$Nd~Di-Ab!P?pWW8;~Eqp^wOAA_a&x50uz-pVFs7GS;v7)mY- z26+ELmaDkf+gqFbp_c!FN&MSH|C;^3ZiD}uc_S(8ay-{9Grji{~Z543p*!J``?A!+&sEKb{_DV{?_4O0qe>E zrfzVs0k!`K`qP*bECgI1oC#K+haIdZC-Ywk-~=mB`>#w+_J1e9!ojM8i@=rH+1dW| zK^MpcZt&j+;6{HA{&fG}z5LVTfA{*&@1G(6ciF#x|I}yW=J~IBfAatI<6q^vKpwEt zV8MUJk>}qj?tf{h`yb}=pRkZW9@H7g!pz14WD<5Y)37iG1H{?El9@ye?WIgC%*>s^ zqY1vE|2SJ`AOjmS=U?o&nG=u=j57IijYa;V(HS_veg0d_$_%E8{E-QE#ed2r3~el| z!Djr|hXcV*9QfCZgAMv`sf9JzWWe_D&$16(U*6CLOf&y~cKm-@ses|;&R@*`n_d4W zQ{x|n|LQO83`Wd<5w#fqK%Xid8A1>@& zTvVDA)!RA$qvexpJmVU{-at|SngwK>NcnsqTHyzI*<|UBb z<^6M}&?P)ROd|g!rA2EhM*CL(&N_ZXdQ-8KkA2GhSI@BwJPEY(HF8 zEdck_w>-IgLte6VdW@Ry1JzzJliHXGD23Y_hB2zFWPSFGxp~i!tbOCxb2^__^1b&8 zn=;=|AEJLm=UWrSVRl|r{v1FRz6&c1W5Z-kbYWOO9?e0|25x>_2cPOzQY`ni!Oj@zXFjd4=)Zje^;zWI&) zr3-K<=OQ>B`s{RzqN}l%liq?^^AfcSIRPQ=PA~;+tkrRXdi;LgFjWM#JiRKw07XB}=d+%JN?PfR#+r6iDb&pH- z(|Fw&5b!mt_H(__76Ga!rA8qBnyPQN_x)M)^SmfBlscUDukqryHGQ{!&`)lK`J@d@MTi7q3XK+-fJ(KljlWu%*`HU3b?diDm>q zlV8!g#AX4{_y=h2=x+q^G5%;@I$KT_e@sp>PMZzo-{KwYliFY$2;REVirSriFC`w~ z^3W0yO1g4T*3T2rb(|C3mh;`)yi#34!m}NkmLe4t%;mn#{@Sz~ad+i2bZ@};pa;A2 zAPw@O{K}YAMg6^o$%A`-2%5N9llJo~1fLswMUvZ5)hHJNu_~>ba^^`tv4mcvR>lV< zl7_E8;zGqd_)uujwoex@%M~V&Bzj_65HCyw?tkAK!?DgWmBRbnl{|~-^M8$57q;*w z6kFqnrK1_$Dufp&t4bXpzoHNB1P%cBs+ToWYCUk7RMKhYty6|na{TO~a*R-2(6DlS zV@j+jP-?JMT0g42DIZ|HW0&`hzS@aPfO7k)d7loBk`$tzFY3KO(qbri z&5XS#2;xIiay2nCp|4;8QQG33|oT=*%)ZmU9?; zYP8`fAJqN(O1P2pDf&m>v32sD@5Q3Nf`BD%XjX6bfg`maiTWYDSev{74O1X>m6Z1q zPP=Gvj3f@Dap#l?4kTMVm7-a0!hUk1yX&)Lk2E)dXf4q~j3y`tvN>Nv>O#%KZ-^MC zzX9VzQ+A!o=Z~S!0A0^hV^$*d9RAl0kE{o-`xaH^R`;$~oLR*_c|USn2Fg6PY-1bttnv*&3%Lprw?dW00sCtu+J#C_Lb1@mag78{^>Z)6ELjGAg4W)NS zbjl$|lH5C!Kv4)AfVkGYazaMHh4IeurUu5(eN^Q%*{3EP%UK0TL66me>3gTA2dAI+ zjLDO4+PfefDec>2=E0Ucly&8TnvfiVuF@`;kBJ=!Egi7!nErxruS4DLuzLubO<@!=-!ty@SxuLEqi zKlcr)b&iIijVT!Dc}}4HUeNbQ9T5U!5rn8yeTCc3m$Ix{%{2X!GnnLJI^yoXn7qCr zEb?~2WdX84UAj2r~arZaU8}IWYXJg)hE~qieqF#z^A(*?0 zb5k=vLY%<(qNoBDax&64^dX-J9wc#1GQU29BjBiV@S9h2iqjy8?L>*}9DH{8To2wp zfLNZl_h{3-vZ5@3gWl=>LLpSR1kd+HrYRga6d0^;-Ro;}n`u zC{H>WIPO;Mq6d4908jwIg4(hHuTqQ)LM^Y4h%1J%E(%xdIZQvZp`YZ0ieTK2dHC+2 zSWo?y-?B%B-a=%@xme2JeChf8g{dSQZW8+6Xc;Nm-j-`$B#oWjctC=;a68@*jfM%6 zhL?wu+@42;`v;IX7y43@AO#TrZS>pXx+oLEgV$EZLzWd&&Ll-QENaeR=d;338>HP0 zyj8)ekgVrstFBbvNF@_Df3%z6u@UfGdWFe~gBF9}>h&wU#YCwVkbS%mtvp(ZW`Nnd z;+`UF#2Py-@Wp>E+jOI03a@XV+S4=Vzt?Hf5yW{S9gw~FdD;$2KthHj^H(>pFsN)f z4Q~}pAg11Otz^}GlkmVh$OY)dV$UFM7(VoFplzRvu}iu8Rzh~R_ZCpB%|cH+bRRcF zk;w(SyIn*B&V6tzWYqIL>a+d=L9!#2#j!iSc+{-4Lv-D+8<1Mr14|h z5rQ1qHCul{_Quksrxq4Cp)7U=6U32Iq0EL~yuXdoRjAgJ7aYGdhqMcoKCTrEcq=4Q zt_uNnJYOp%-lDVHJ{3AM9Txy!1<2rS>gA}KOz6~v!bj?Fgn8&JN^YB9S)A))8jLOl z%w&Zs9aC}b-FTk~Xa|nQQcZt6${)~Y`Zu9H>b&q3d36MMC-IVgV&a-OY#qHKnYAhK zc{-*!UhBp?jLCF!ozB`n=bt>R%CqE&r*g|2c1#6H)}8L*-dlglVJshJ@)g1P#=agw zE5o=)ukn^t#d7Tv?T%KAd%gu*h8VTEALXyWBP8H~q?VWMp=o*lmLa<*CPX1P?|DvM+^wybl^%n$TxxaTkOwOq;yw#3k&RlMc zWy~bGcCt3;JQOr7TK0zBT6xClmL<;?K(a8nKGKJ%7QaC-n|j2Yvfe?M%h!h+V{-{k zj%v@0!E=eYOLh6y9?&T8tCs{o$bN+3a(zbv=>l*|wIJp=_W5n@wojC!L2#%*!u3RR z#qR_AvLcin_JFClv!D+_1&IyB-`Iy;hpg%*LVF_ao+Pi`U}7IAytdg`W%CYLQz8SS zl9Y!Aq&|HUP9*#3giy;^l3w15%O@DV4ijgWtGR1?QRUUWu$BwlH6lZCE!kM71~Rov z3F5aK(ak6XlPLOZqQ0KAJoG$vAL@;ua(5+D+Ru zyS~h#+A-`KVD5?FfH#)wGn7eyg2r#uDJh!|f(plki)u}!R?=untUdP-G3m#!+`BLX zVfSh;9q7*Nk6bw~{KU=#zoIWNWj4>-9(bu|B^0J5gndtP&`(WH_EqL4Kg$zWNGx9b z;$K@u-9FE*_bl)udJ45@)27Gm)xyNg(OEz6CHDXLeCcMn)iIxX4G{=CvT?o~>85vn zH)jRqsmhfplJO4u2>wQLs$%ObaIlp+V z?hsVcl(!3)oVsl&{knKOgUOTy7UJd;o^g3e%&7S-)xl$xGW;Iw$CfNOdXBY-!xWXw zY{~MTmkyY*Zqp1Wstn7q4tC;KL(|{4-DJJv+c%%aFAPl|BO=-P&JVk~I|j-}`N|Go zru;im>|GXA`gxTO?)P(bJv&79bYrt~1fS_qyi(RnkBZQ;!7hK0=1M4LR*-A5vcT5! zMyviAgjw)5R*;>tY3Nj|4c~r0Z=-e!=_z6Z z3ErPXFYE1bBY0*#!wsaa;Ng2Df#%}BJ=?dg6%JlG^&5TLbc6Cm{Nb=Lo+}5tE`TNr zdL=9=?iPjoG`zIohU|-oPeB#>%flDGO-RVEFUWSw1@%I4OL6yFl;;i9IwIsp|Hc_- zCbZ)8fDqPbnhDt?=!;kl3h%uN3^y?&XFdyXK#u&BvmS5m$Hh|1b${x4BtQpQKc71 z>#>b=fd{I6^63Y+os?=+TSM=I2i&}P))nSB*KG%m?CQCap#s6ZK`*keB-YpctLIM( zfs%*S2nu0sd0gr4<9(+^XIv9v_04GQF~ldREhIN}zGQC(b8b9SMn}uGvuMtZc$>O5 zUb)B71u{R<5QOYvd1)kliLCfYY6)ZQpmUhQ?z!t|^im<-I1kiU&sKmw(X22Y15heK z@+`8QS7U3~_f`)b_^7_rX2>&e!Z?J8mKgWuLEtx$o^!#Ssvov#WmiC(tl!ovgz-iU zf`pmAAJ^y&8tV4tt`m+<-^au5G<3UE2cAQB26~b7yhUAR!gE=F@xXxaQN047b@M~r zROK*80ai6f0<*XAg9`mC0hJIZu#4*`Qb@vsfq9INY*VZTgy=>y4iW;5c+NQ0GqPNn zsupyLsBVZQI5&nl8LE23UbC`-9olIT69qLo!fL|Txla0kvl0&RNLK7)7)p-o@cq*zjXOF{kkTai|L?i zo$820TAk${d?V>pIP|dF7P;qUJUGAX+!Z+=sg}S0FmR8OH{p#2>C~m*mjO7Y!Q*@C zlGU{-sRumY;(eIa+2Uhejs1WNPu)u~I#3OJD6wk;J_-W^ zY<}9}+Fg~<-|TY6zn#pS1vL-{3L^OpCT;hlZ$#|mt(lcL(mkg0I}XpWZA6H zW&Yb9OSf@K_-od*N8J-&Pj+yH^SAd6%l&SaFEd>oE=;iHN&e z7fnch8JH*n%_zqv9413mN+D_ftmlKj&A-0Z<2Z37uqGHEH0sZ4*3)XVB$dn1z*xl7 zKsxv&z{i>9w7xf-9=gVNN1ALy+l=Y%NZoQLm_VwRt}iAK^FlUPu75SjVc7R?%I77U zV0fm_IdA9ZKi)?FGEIbw^TqlG#~&wv3F=hjL2LULQCN2$?%e89f0@RZZeJXO=|Hbh|uy52^1heh?C;?c+M`iBaYvR z8cQu-AF)t}ZSlBrF8O-AA&+$#9B@l{BM9zOC@+?#DsVD`jSInMh6fo)!ZvaGxLWb0Nzh5koa=c$8x=LP- zJ#=kXBQHP2#8YoDwo6d21PbGnIozN-bmosmp#V7f^8w#UvBp^p6sG&qO>r5+sRf7F z6Bm#mfC6)L?%Rgz*Uvg*QRh__;17WOv%(6GC|)YrFi&^~10-!`mtS79?zuhJ2AdVz zCZ@wZ*GhSENK~W+i%zBl)uNBHKbtCcKB4Z4Qtg(-sS>`dp;h^A$alCYpS!m)*~{Wfv;S+rKmXMSa^y#bJ$Abt7+9yd@<;9Y*j*2H?IDkVPx zFQm}&Rs(SHf(vq8iNm@ac&pw_lC%7a`v5H_e))TNO?V-#B_J_CAwg>%_=1v#nzgNd zHm9$lpIi3Jk9=Ll8D(#wLNCT?Bg@Edlks+XQ%X(PEW$_spN3S4Q+&;oGg zO{4|t$%R%9j*0YEr4{$CAF7@$)Me%ar`8*R&*=HmaaC;zX==pBIityu-4j$9 z$kJ4vFM}#jG#^1T(h8k|fT`p-JRV#`_2`5WvST4mw%(YuRw-k+hcmu>7Xj0hL+8Q?%=A5&jPy2@-gCUw7_ z6|lNuzW5@_K^a>Bur$Nv>iGQcAZGZ*lC1jN+B|r?0xVC}(sCyNzQTjS(W`mcN!kx? zs}|)(FARYM9(rf6*ca#f>90%X+j1KLwO25!1ys|4xV>-;(QLMN87!XjNJ0@gy89U# zH{h+`pjP&5vL#Fz018|PL@Lz?G(Ws`Qq)dU56-dO|)AkkZTe4J*sEBq&siBIfCvOKgs}i)mi9iQA#LYn3CP5Nb;7B9$%qvfRZ$WyW3@sa&xKdL4T5q znMMQpUP~XZ=t^#Upo2fqRcGltxI+GFD$L@3^kHa2tw#@4!pkoo*RQNQltY;g%dN3w z`UW_I0(hgZVGMaS@L5u!GfH%uP{1*u>9S_*w!oK^7 zWh#V%2Pe4WyJmSK#T!-GU-A9UzmWCdQ@pxSRCndPMec3bMtAF-O8=@V{U#b7!WU8G z>rDcCM+V1)bNKqRE0A%`1)TxYZ#m$t;=9ph6T=>DUnM8aYVVsZG~Cwe-a2Iqm3>j~ z^%ZZZ6c^0mppECSh||&+n$ZGXGwf_3I3F0BeK*}lyy4yINys54NJGKy`5Lu&z*8TM zHarh|xP(?y&l@nRcC3HxVZWt*nfKwk^H|+4*yqJ}LzfHX*Kg8ZLnkXx%^g$WNRAYK zDbeAb?Gr&?SHy#L_q0n_k%$+;&6o1)&qFPf)u>xE1g^>+lWzSZ6bA(Az>6$OA*Ph)S?+Xl@1R^~UjQl^m@oc+)R0yC9Z zCoD+kTc(hiM64mJBBfqt0lLzV$v|&GKOEc6vg{v%baubi*%#V%`NNx?Pr}unlpXF3 zVB|tqHS*VB@DZNgZ&6*II~_BT^ZOM~OnwlZOc*?#RdCdU;8D*XAN;ttPT-d%@na#Z z4YG7#spD1Q*8?wO>5JDzl2O9=`k+sM!{)hK7EUY9LVkY-;fcv>lNh4)Hp>L)7URfr zu|(7Y`?s&i64l*LcLypjqMMpbP0``iNlzBk!jvlI+_woe{i4mirGgYE)JO80m~0N~ zUUy%_AVc{9qxQib*w?RJ`WXAoTXx+SZDV;Sj(v8)C}TCMU4*Yk-_yfQa7jjVmoyr6jSub7@9$33DMTuD2s z23tNl7pQNS$F3(Ho_twpn|T8WyFvcbn1Gie6IovE!E0s^UqwCK|0}N13lTo?YM1 zh4%w8ST9sKt>w;t)YcmsVi{A;as2E%vri!i)}e; zL1D85If@chk*`E}(!JCiM-OIR=3RtsHl()>QjLr!Iz(iwEU&Z=AKIlVF7wa#XS=x2 z^fGz;I7%;5yhOq6Ig*y2qqHe6yRC~VnHqln`D}b+o7MI`bdJgO$>z-QzGtuhHYFv< zR8X#c>{n9k25&h@evpjW_0H#}QT?=oN~@BCS$y$v3?{3Xd!Fsd=;2{ommq@P-}v~Z zA4N`9iLP6>f<95~S007yZjZP}tmIb{zD)4Q*B8u337~Ancm$SsOaLi*6^KL`-*mECj%OzhdgU!MzH_Aim5n1<~+c#EzKYe+AMh z)2=R`aD<$kKogNy?Q7I~I6f|H)~^vX-M{+&PG3e?%BPDKa^wJW`j zxu0(V)pgh=x49C3upp8ptsK7X-TYqC{%f35!Th#nJicgwIHbhUHcMxjip9d+$3xc& zf6Ee$H{6>{bt{)I)+=L0^cS*Msa);1oA6K{F*!2zcaS}T#es3~b+A3SIe` z{!BP*IPHbsji6RexF(rknhrbT6|TnVM1p3@1VD0fhvu6OLYlZ^Jh@VL5X$j< z!Xtn_)+(1v_H)SVs+m|$Ecm(3zPuDE&X-cP^ONivKHAgz6RI{E)$;C*qpi81iub7 zgfp*6k5^H=1Ltr-rI1xn7Uo$&?LpxspKi3fYxcOtoUTt#_c5#@JAbB2JXm?x72SvybOlGaLOB0omDvUE0E12Mtkp}jg!zbY3+PpB|%zmE&ekd*oL zMbHqF?=0w3M+F;078~i7Tk3+8HC7>F>V6dhMNODKx4Jt>`2;9-HNiF!gK{#s7>Wz=dRfUc^UO9**icwfJFrx z8gzR;)0-ehdzE~J@Bxy4x`?vSc}Ty0RExIIWcteCM<{C7r`MDN}yHjGq4Y#8z*6$Hj9_!jds@cS*q zUqyty@sHKFkS$-^++BEMK4iSmi062P8kFF(z%7gRUYA;9)%!_EUV3A3!+Q634N8sf zz?lQ8QQV;wX^WH3)z$DCF6`0W*^l4$lO04r2 zl}(&R17$Jy$oF^W&{q(6mD-!FSfXxp-a*vyRdEF3auqp`IiFCzZMNo(?_xVSi+fpn z`yz$hAR>dXa9ik@9W`RVmfQxgA4jqCT!90UV!%vyQ+^3b1-;-W^~+-y_m2?Nz%MHr zhASS;B$N5wWn?d(`I-O>E7ba59md4UDwA=VZsmTGX;0~$j57JiX2s;*4PP&B$6qyN zUM_uo5P?SFu)tN|Rp^_rY6`xX@;F71h86!oX_9+I*h&~{AUv7NZUCVONpqFaSih1$ ze#QOSl2YG%1lA(3U3e+yg9jGy?feaM3k_^KDA;<_b4U-vNgiUx3%!_2ES7_J=bfm_~aDZ3&?jLFy-mv2EkTwrx8n zw(X>2+qP}nKCx}vc%P5=58P2>)TqC(cg?ltuYvJk@t9oWhMNuWPWaJ8e^Xj{D8Mh2 zQ$%j1-c5&pihA7i(DHHn`rW3t(hU1Izhoj z2*P))xOFQY;;s*OOxVq>$r~DCw!bMs4B*agi(%8N_(xGMK#wDLj{1)IX4AaWi(AR> zu$S16NN&V5om<8OBPXOV@FHf`zH)&^_F3r!KeD5YrSo z=bDd0<7XJ?>0ET3X(#qg5tGOURW60Db2(oSoGm&wX}_=eQAY`lC#ywQ2hBUBgr=?S1aI`L)>?fHWLq0e z2cnTyMhKgoy_STkqz1bdzd4c|R|q$f?HESGa2!P&qEld8TRlz2arq9aQ|+$x)fWL~ zXHpCk+hXXM;@U=jg2Vxu$OB=EnG=!wZ&+jf{96}E)P=R9Zm1$NNbV7(ZW{MU*UWBx zeQPcyUJsnl45;f6E9LdC#AUeqT?;99(vARkxT4MrAHZQ+BOGfJ&7qk~2r8nSiL3a9 zo+LHIYD^;%SK^)clYe5!CXq`Ec3tY34k-tvYez}R#_7Kvn#1yo5qBmtN)K*Skn`$* z;&9@HT-luyz3{uFd>S2vajmDZB!fSsbFISVyV6^U^G)$VUgT$pV!ga!JGKl*tRlPd zcrURcp~eapu-UlDxY@Ye*xxv`s5jowUNaux4NzG6Q!#*L0b2*5QKdRnu1-p=QNa0N z$V>MfaiNeNfGo2sC(??Gl`AIbAo?R z^`vF#qp&`{66JjJS~OKVMYe1Zc9$C!_JMOk&yd_Jn!p( zig1$aRP>?en zAW%J(0ssgU*7tVHSB-&`sORC9IOm5)YV?2zKlwDx-^456a6UkMbW_hN4XI-?f5S4b z#h7G{M>X&K&fvQr{|*?e?AqOIb9}Ma?dovAlfT}schSdTd(5nI+-8}1ojW(3(HNzS z%yQklr}}W*M4es=<~R<^9w@-xK&@gfad5Cc$Jy=-Z-xL06?Nq0S9{L{?=G4yI(w_> z46tRE)WUYw?siu5EFOndAAvmGbQU|SEp(Uhw(%6y9tRy%b(GdEivEkyGr_FUf@oe;?Jia51ytr zs|s6{xGBArT&OJvNmbI5+5yf&XUz*b zWif>o+y>bu2waR`Fa!DRI|>yP25>P3M3o&M6{l%oo+2%E19}X9lhYTDwtQ~Ql-QL z2S8Iq(oS9^9H3ITQi)3G^>Wr}**Rc2p=b{GULnjF))q{grIxz=9CipNT@hhbnnD$-h^pv+kiuqFxYw~{fANJ9#OZd$iQ@`U^5g3-#(ja=;k-0D zHu^~F2wqJOy)keg?Vac&3*)T`bWlWf8+@Lcb3%bNL2_!tZb}lLpn3!fo-#iD9G-_= zG^cw3LJex54lyQO6}Ff|R29aYVgN2JJYqz0GbJ_Qpc~Y`VP-7WD)B|j39w{)iis=Z zWb(CJ#UxiTpy93OV-x|8i@>?>-`jMjhRMY(bKs|2^c}-Qu(hQd+@6a>$nUHhxt>H@%fCBu>Gg(L(x-QzG;LFuD zUao=5HJ%;sTH&5m@{^43&Ap4c4tAVp;2{|(+$OwDfK*C z@qo2K2Zm4{H)MoHl_6fl= zoM#~06u&m%gScpKUX3bVvS?Q^sgZvzbf#*qVlHE@!~y?5x2+j6FV~^a-Fhr%cz(s} zOQdp3DZCk-`kSVxrim7i+j-Av>9l?R+F8+5@R*L%)roiUHH=rK2j=ow9_~>{iY+h6 z)d2Qt*c4xNkI*Aox3EQ6>wAo(*kEXcflXD2)ubvh%I}OhJjxjPCe43_nH4t&f;EF? z(Daw3fm(y*N|P0Jhm6-1|F%m5}^gLzRS8q8tP~x41OvOwhUHtueV2cDC3oqKT_ftWmB>32jR87mZifVGP>l8CZ)4 z+$ZnK=X!c#MOVLSnZkI{-1`c;{hfm|a!;3NIH#>W zGS_oxY*qe1B9)}H(0Aw6{?Dly_{RUH`6e7@l2A0G4m>1#Ds7a;gHuZK^}Tl{)oc^} zM1lIyVpebW$4$zPtBI=teMdl4aILmFdd*F9?Bsg&~b^&POo8_w*`9J@m z>2KgG(+#=7C$KgEUSq~(-_%{CzWrBQe`)WNvT8~s(8h9u^urXl*%-6UM<_{Ig4N7hH@ip*4ry-8)_@RxOyp!H|EBz<$8 zrA^!$yDd98PYo{ow2EME8YS%#mNj^XK$knuKv&*rj^;OVXXvHXE(cbbLhf|RF8+Wz zHs0Zqzk5c98OH(5l;mIN%Bme4HgqF^yo;}iEIc6Cbx7)&fGkCB=G+MwI z9XvLV^WlOW*^pVN0kzBmK6Skzq;DkNbZ@qsJg`wgWKFW^}a~)xi&1UIWq55t%+^mX3wv5(B*87rXKMZ)Y_WRtizhVhSRLR$Is?jrG6VPh~#0% z*&QD_I(~G|INjjSS4a=s<`J$3(-V_x(EDt4v;g0G#p*onvHzwo#GRUH?#;J&`Yfz3 z!JJpGE)n!MwYnP8YHlAy4RJjia?n@ws6C5fh`#o|62a5aKIJ`R^&@O)vqFV;ln85fgX}_2P}*% zW4%dah+!L6dYk&NcUWm|QD$Qj5c2}Vr*VD+y)5iA;*>3+=7Pk+3mk}Xu;$I*Y$`aV`Tu~{!OeMUW7nOn7jQY9C8*q}`jWI`--vR2@*+$+B@#-k>xb^+z8Q#8oultaX z-gP2E=K+fNe|di82pD*WF7STjjK&6GePVYtRUvswd-yZgi_0~~l{<;c;lxso_Txfg z4r#GGN(@SoG)ULikzNpm-*d_)XVPLGzqA`&oFY*Lt=mJze7T2J6*{SJS=f@8fLU7` zp`@HoJsv&QI0kj}^SIUWLS;FOi^;tzzx~S`R}fsqHg0)nZ4bOiPr%&`tDhXZf@t%^e`*@ z;oqoT;CDh*h~RWu5^tJtu6LxNBz3v{^>54r75X1HkM^FeK^F!$w9&#wWHU%qEc&_|7Mx zlEO|N4DYgo9SfvpEimkY{5P5d*GH%uU+n)C;;xKtw`h?rU( zYWN}9k29<;I zRm{^Qlbs8x3OIJnR7n_2pal~meI*DiWk5~OIqQHe3M~?7W~zDwCPc(b0x5k3h2O*2 zmaoz7>sO~RzV~>b;s~zi2CfrV z6e%f@492s<_Lc47(dL!67qxw3Y~qOgKn>y(`9L}nbxa(zETl~o8Zp;e0MJfyrIMZ! zzD!nN;sl^k?GTx#{-7aD* ze^XY%S~6X$QNURG!;~eB1hPW^(TdAbzlQNY@f#RqnZ)k)i>m^It!$SR{py1#j7X%+lyqu#3NJuGeGt0c7P>I&^T zG3!_}L*TvA$QUYhmo6_-EUa~5SagBBoE~;wOQeIh@#kAo5)V!Gr-OH=TD^}pRxm2j zJdQ$4)B?I98j8NY9h_;(0fmI%G6BfH?^MZ4L6$?VIwfU-=8i!l0pAc_ijD%;O5^;! z6P3LCXkI~4vtEMbHG!>82TIh(k;l+dYJjuAa%Fn~yCKi7yFX1wB4s?qsGD z)*4pT6mot|nI#>$gC{Q_=#|LoZ{n3yir4AmDb4A~T+)Lb9u8+jG6-T#lt%C5Hk%lL z`JV_Y3V9!gNi7q{vtN67C(%$nor{J=W{!l6Nut5+jf9MpjC@?v$Rm}Uorji}Rd-HX z^2JILgk;iCD&J}#xFcyey$S$@iv<#Uuns})f`)!H{I0LBmb6mI!cCrmXD%=2X&<=L z&??xB&JO6f{fmddfFMQ7O2#eOpJ-GF?_?LP!dy#%Q!%HWGWQ<`Ay?C5`nj0_%=vs! zk@D5j=*%~BcIfGB+?(t}4I+jV=i)QoCr`fgD87%QeeC@mcfG8W;~zzb$dC z8Fz%uT5yNYQTa+CW{EV9Bs}z1=x%*$O>Q-`hZ=g_D{OMYmB=%WvqGc}s0RH!C5LW7 zwPAyLVGF7gK?y)G_#hXXUh326OR9Ta zAW}x*vW0AGF)rEfv6~X9!|!?ppv|+9%huU;>h_(gPD*q4Do4`D36?|t!uICgjMVOXEm)o{|LkVHyB)m;{oDqzW#Va14bIsWQAl%n)I1hXyf)r z^t$=|WOcQWn&?*Ymy|r$U_O)&`IGyz`?{V8Pp+rSR>SG*#A}0s0*!d28Zyz5k--tN zAq}g#KKnk2UwdMMK>Us=^RS4N!j-_6Shp$K5vg)C^ogVd@u96gv^OhOpt87mLewhf z!B1eQkjx6&jLQ%o65SAf95j8Q)_NLB{6=5%+eM)_JFkQ4LH#IfoTL$C!wb=@=Z#yi~m(zI81sm2_mc|fC#hoXmw2k@=KC}~eAx)yupB50p<*d~<& zO>3c#?KEtjNsa$h6I6ctee!<7itRb~6fTpWMt#;f!oh^<2%#e6fFS{=jo8D2ck7%- znt^kM+5TfHaawP52)LM{b|jj{euG=yqs0JKCAgyH!kT-VLMT7F+U zNI2*heO3C9j#0T?x=4NNT|_v<_`7Kq=P*{PF zbC(nhpRh_2Q0ZGN8>ePXPUE1MXUp~JrT!HS`@%XZ_)9&_I>1w>$J;z)KKjA4d;9(B znaB6)+5OBkJ62(763#`)bGsYvEH=8OCw=6O^8gIecoA{HfODlfK!Vry%C8WPwR2N{ z=HeYgOI*Pyf%gu4S#P-T(qNeW`tl0_ZLY7Gn7f2hY%O~}p7@a9V+Sw+0mC2iP)9e) z=GO$n&dKlpG!@Kq7U9LH7#>NtQ+YXGeTw4fZg3P{^SaLt_)X7o9hOu?Zj!wN)wJUx z^68K;AJC6Nvv}xI)W%IKqQsMTdMco2*d{q`m5c+CLd|Z-3SIv=e`nHw;)!%@8I7dW zFwqXhXHZjJh^l+zkg>sr{Qjs%3?VpuUMq@cHi$sttln*I>9o>ugt>#=CVs;;X&srW zmqO`mXc$OEUdXV$VbeYHYEcWo+3>imDNe#~%Qt_W%JS{-k*%iYCH$CEms|Q+-~3Ct zg}a}*?;6!v{&f{JesXTB#qIM}#r2NgzTvyL6&_h=RiRl9er<&VcfBYrR_k3)ZzKpDjD^`zYVWwV5qEl>(|po8VA*yK?i~*SeFkc#_DlV61s>$*BLH9 z-HNDJDxgIyQcn5%|yQaJsgZ{$?&o9$T$f8%m)vUgx}a_{|@SM!=<`KVyiL&ZIE6Hv^y6 zBuJ!VU~{)xQ1wUu!9a*hj*q6MWWNCnc?Wr zaCjZIPftJ5Sv)$atvs6E0ld$?n|r9@8CnXxyk#MIv@Zy(a@rl!`I zwt>;9ewN+O08|J)W+m-wX2kkRnIjXMt34dsgr*#|p;@G74C$HwHYci*)LCi`6-5rVDTWDHIb#M`UzrDdc5L=dB=OF0RVzfT;S5`VnXK(;p~5QUY_EMN=G1 zTyHdLTLDnp*y&3$xGXK;E+P;KblA&nwb83rTkMx>e=BIUS}Jq62#H%fF4C8>w32zJ zQJg2cg)q6;Tmc*li41m%KKL~QEV<4Dhqf@&b>jN!&rPXqs+I5TXA_+USM^IPOAtCp z9!;0lGp2Yl39G1goW?qn!|FwYYidfyu3p=2GA`5gjMOhHgr=NQa_|9I9ZfvZ%GL2r zA*-0h{UfFe=!lv88r^`g6qTICcxQmrSU8)>Uj>xYP$$tNkvF0iv1VaSqJ5?r3X_uD zMtn9FroLu^aC!ex@4MVx-m5m+M=)u(k zs32+@3UAhP^ms2i-ENnpilY*9E>gPpT z7+ew!SlZxY;|&<1xd=E6n#uA9zug#DwfByi)Lip+x#B0}VcYX|-M1(CwxQv} z{+-Q5ogSx&I6#DN2``OZ8ugnEIogd{=@6jB@p|$2g!X>DdOw%5l2d5tA`J#@V)VRf zETNJcvb`r2TSTFejIvt&CW=yy&j>609;=V+T+0RD^t)l_1>rIDfpTn)yczMt3yo)FkbkO43X&Bj!_&&|m`!BODI2}z6}Dhr@jM|j`if!;*79q> zQ$!>tc!W8F772|wFte_9$Dx_m(E91k-+G+2X>87@i}T|w)LLQP;7Z;_-4=Em(cX13 z`yqr0kM=|!PJ<8ni~FEqc7~C6Vy1D$8Z)3Q6?R;Wx)LQmHZL@USapRdJ$*o;kf&@C z;?;0~cW*Rc9V~4(R}h$YKwU{^MaivNiqeiR78r?}6oiYKh<+ZiiAOy$4A0)*&76kC zX5Wnlb2)fh14|uZi$8p+XO-q8!aqzx^@)ZlY1D@vgT%OwE#FjmhXSScgtwsZ8H`GucPoN7t!$`S1&B%gRx{ ztnN9xa-J7Oql384@WX9FuOLrmOx5Q@*Ur9eep5YL#~c?tWPF4==UgWxOj)Cg=p1Yt z@{lo#ooc61!ZJ`{+SA6gFVDPC7|qAicch4Zg)>^FLKP1`_vU5{fz1y6^a>bx#&cucm0^tj41yHY6>YY`BRQNNk#9c}6$FRiOm^)@GLAa?{&>b)SBw*;u(>GRCq$ z)r`D&qyC}->Tb^rYmC1f2Aa{2fnOKDQZ_!e8lHIxQH2wMtj$;L?e!X;)ffA5OSO$+ zN1unFW*T_b>+jux>4|Dh0B*O3_5fr`^M%)EeA()U(^?I_>AErBiyq)pFf(o9_Ja?F zd=(wVI>z>&`4zF$pWkw+bed1A5LPiZVafUUrg)>ReDsX1OUwQ33^P@F34y|9D2UQ% z)sR8x{|$7AOP9(d_3wYfB61>rthN~+W{&&pmlgt7Pe&aFRH9v2om4gI7qQDS$)tjf zbUH(x61^430(2hj2gRPt!gA(Jts{dtO0P>E+*j+$$f=Xo(s@9h2D(}0?3S6xnaHL? zl(Y_v>frlHLCkWRv5jGg6QyZB6bV{Y#)pUChs-_(-*=2*iF%}jmR=hF3Ss05;o3G# z9bpUy(B|w|ak|AO2FmBkHs+2Q+HfAp$BE&h+sY~0sG5bccc|-?AF<_8nC<^Dmim5E zDg{*3OCsaBkR6e}Asr3|mJJ2;i?T$;i(W?ITu4tzJr*q$QkC5*6}!~7tm`~$qb&D9 z*gSZQ+zz>Wkim>5`0w8kzt7_9?W_xJn|HAXLN@+*_mzwLd~fv{71vE zh#%>U^{*{;zid<(>?*F^!AnB3367S&wk=El>h1S}d>WeI9b#V{ofWKPd^!i`tEgYZ zxD{uehrOfzLC#mp?T*5FW4gREJ>m@qD}wH*bIci2j0cxB*#jVq>2U$9%7}-nG~clx)2sYJXnCcXe1U zT0EP=0W{y@Y<<4cWuVzY>q^wB@vu`{8k;=#WScBG?yH7Z!p`F@&UNfo|J4k<9Dgm9 zc79syH`@vUHnDuIF5Y23`qyJaW&~ayhvN#wu%3P0HGs>-0cw}6XY)7XbrEQEU!f(w z>#k(W&rdac4!7Af$5}D2BENe(x4l^Y`~ru?s-q9b-;fW>H~X!p3`qnvxHA1tbJRlM z2gLEwNZmdI!wV{iOn`qU=En>|Mi3a~LWGz6Ef0gsLRiU~S%~V8g=&ErqVmXsKQ)=)K^tA$U%xNFx>is}AVmd(hlrqk?D}0CBa+|qrl>vXpgV_`W59;&(}K>ioCQ)&oY>D!I5vaw zbp!Jy5A=UTLaK#?IAPOqV&-hm-2cR{9`HT$N6rbrb2+KzoP&E3({GI4TEH#8!m!J9 zppUL8SKF37w4e_p^+O?oK)J<39PV46UnxvKT|K40D9#d!&QIJn?>83_;P7Mk1M>iE~C z(bGNcnF3KHY5}(ZcW^2tr#>dumC)Hu3(*lMtw$Fp=lS1oI!oW(&lkm?-SXJ&W=D_E z7OOFxZ)9FiuV0ahdy14Lg`3vxFIn$49le>7Y2kHCQ?t?WOg%&j8|*)d)fhx${JBpA zza@&gn-Q%duYR_OxF%i0dlNR$HPYRCoWQ4Tr&#Ii1W!I5LatrY@nwE!z6Q-gr=i!Q zDY@c)e&ybWN81Q0?79UtzJ1?TAvDOlz;!B zCrq0dX%aw+9Fb~9um<#0bD>Ly<-z*Gf(td#dIPIjUQe^Y)Y4H$eVl|XSG>l?!3x;l-`DfH0I-wuS&-uYxV6ag zyq^{4rhU10zN-2~{Dm`Q=YwyOT!zSpqGC{nCjwp4v*J>BM zkJZue!qJ+JYtHurvKB;h6z<#7T8S&2I$c58i97oCTVH{tB5s(y$pO%yijva(pdiH; zG-ltGqy7mJ`?$7B!f&tst`eRUVaZN zP{UWir#9$AEP*CMv|m4oP|l^d^ERJ&T#Ra%NV^VDXL)}RTA@Gl9QlV=EC*>5;vzTB z7D&!gQX<7uv`I`TY0(zY^YSsv?#tRn#pstZi!x#l%fe^*G(8_=l+?WtKdm_?YAfeV zuC*#tSj)UCRRU1_rb5`fX0`p2{kr&LxiTZxM@E8;0I7?$6v2ph!3okUk>oBGB$IBJ z3t;D{Fbg2dKf@Zf9pnP!5qhv#wotXjfsz-DuJHsOjQd%|_|)V6YCWy@=xo+}?%Oom zJ-Th3_Ge?mhGMpSFrGc`&sS(I7qA*rYHZ_toShZ74JqeQJ<`!Udpr-Ld^v8Dg}3pDW`U!pBwtD$Sz2lv~7KDP~)=HqTcm*Y_LOp0Yl)cT909+BUW% z<958QOio%T#_pc?2fG)wIk&9p@ZFye9ISSv zkcUdE&uT3q%ggkFe&2F3hN=5W2K`8a0^^h+k?SQhDC?aQU=@Z~h1^eJJ&qm?#B3i* zUUB=P;Y>SL?_r%d+m&B9MONB!TENtW7UJy;YfWsDfBL;VEsJf>tv^lr0>Z1fKj{tC zDRcB4jEbr+!TtBcSPo&(DiT|K6?sx$j@$k4nXxcDFK@K24knw$51jXCMA+SW4xcPD zB?v3?`_g;cM*DpN*Af_T8THNGbepbhdVytP6tb4y-gR4*!|L-~mE%nSlhXSGre6ec z(vU{IMrIe2dO(5`*yZsUej_%JGmn?_WG-hxUjDJRL%}tEx#Ri=`Qmp=#x~6#36bc* zJxY=35u{F8JPLeAb`*gl4n|Z4#{MA$MfEi32uAnY9EvJt# zzuF1=(BMSh^z&w$K0n4&{Miw%&M~}c(p`i+X=+A)ZaPX5{F}pxv{quE{LI)4q{S+Y zR()1Yqe3`Uj&M>H;aoJ}PAXK&Dh!a|TpWX>CXepVT97B1mp;b2Kbsw!7pj@uImP2# z6*4s3%fMLNDHhm;Ju1#l!!z)SAm9GIw|!T;%1WG;N|!ZckZpYL9}6Eu>%!;{;N?fVoLTZ*sBI=)Sj75J1Usv=#t9t+{T^Hg;nDA%$c~m`S@$T5rH- zE=XHO8nTYMFy0kz2DLCC%S%DqSX@Yf3x6`2THxcSwr(#p@e$fJdo9GjF9P=Kc{J_E!lQqMA|AE@(9M?sRQH9%IRxnQ9)!I=g|K_#C1%1jQJr96@gja~2D{hf(2~f3KjK-sIan5~^$;zp zdx`)~k`>EXA0bQzPuQ}zI|-#sd@+}Xfdgx;Kk@V94Q35A6@~kxDI$a=V2GN8t}(7! zqw$kO1D2blB@_BS=e}~Afd#}Y;MX_x&x=b|#N zeAtLM4MN@{*AH0Z+MEqVZpTqnP@Er{ZJHin3iFt%3K1c)OPu1g$!OxA=O-$(Y;32w z(LU7i67QV$C}BGVvm}kChcsli79dbrX2QIvGRBNG8DT63dS@^lrvl1}+FLt|eq8+R zL{u5!CNNt0*;tGNeuMWc6p^=gFPzN(^U-K?ZfPl8zH<@(kAC`WP#izOmZrX@MkSzF zR5PtLz@Y0zJ4ue%%dwHS7(59>Gsey6(szliOzt z78BRV)#v%(IM;h(H*_42o6n%P?0%eyUgP8|vFR{K-`E7zXa=K$bW4186BL$@&IJbWJnuy@Xo!D}xQerHrM zi`yf%JjeYUA#GW?$md9BQ>GntJO-5$gbL5g{~W6iAE^Wts)QH4JkwdML>4{&Yd?=S z?v*BVM~&Ji>89e3l^gYr8lBJMPKkLIeEis+mokhN!U>H6u%F@fV2o|M5L^6%<@MCi zeXct(hfG8IZRKRHODcwrr*7du<4sTf8lzVy@N@|)Vg!`~CqfOS4I_e1^#Ht%UC~Gi zu&ZFik=$!hk07Ot>h1&hmm^4&mWV!?W80)DUnl=3#CYp6jF<-w7%j9HfE{%mg&&g> z+HlLM_!!&jQ3}j(;rKEQ zEz!{O_Yfjvt%H9wQ18rzL|)vD6SoYD6H-1R2?NYs62Gi#pb_GY9A|lfd|w_1BboE0kTVqZAg9 z3I@^V8y5906ql3XbmJ5Nw3PK+Xz)~wk)*#xT!xTr&{g?5QG^4p{JHZQa>FvQBB2XD ze*5~HPT$DyL%!%|uTIL{kGKc3#SOSg4tRY|t}7jAZI6;6amk90?-+hYQ7J#@?e80`P9|L)wpY8D*+r*34^^XtOO z7vUnn6PM5CxXO=2Io&!Op{d0W1@N~^u*Z(vt@)1VMQVsrJwO#!RY8MK4qyEP^##F0 zoi7qj>nX<-<^u{RgimOO$<~i;hw_DOf^r>r5#MuBqrBEMPSA<(HSF^r-hrBj*%O(R zd21%;bW4PPV?LS(Mn?P^P(LW?MN4CPWQ_2ic<*`^w(eoX>`yWCJn=cp()1Vrq+91E z5!X=XCb#X?He$s%W8}l5aym_6;HuWM?!SQM5Bq6Y3)Grol^>02Z<7%$ zvuX^^>xA_hG(Sf;L~-RfVu`2H*r%`IuM#|trY207?mPaoiLa!@{RB&9F^x^TZd*T? zZHzbXhY_2a)fUrfmuZ1t0R`e-wHRjp`^sxc&O~`;FLQEIOgoJ@GyGya*$%%tQu!c?JRSnK82hE4FETOd&^RxtLf=24LM{e zotD$0P)nxrP`f z2E|y1IN>&mSsOP@ovBfi`5dzYliqLO>(SZC?*$II5uDJ2X6t_?wja;VOl&SGJd2{# zhfRBvEk`#y?n8P0nVX2F!L^(nQV1l)M~-;sGG6{@6^R>C7gSNs1;eG^dDc$}?f*M?lWHy| zkIPe#^6{O}M)LdeM#+(5a!or zenPq&kwL%n)x$r;Vd3NOG?tvTsDqyvdRxc6cSRXc;aIY`#h!-iTkcJrtcL{<_lLyi z%Ah5md*ht%6zW~Ewqc`ksm)<+naD#FD^QKE>$XVvj8-QaMt#gDv`;h^Bk1@gUCAG= z7ZOLnb1BWSIhA>u=fBvob!>A#brF0@bqX&uKE)^hThIfRmr(sWsoCG!HKeH1SkA^G zr2S<^MNLEXu}bit(s&0qTimm_r4oyJD(BYMwmnE2KbobMAzRE_0(9o8);@O{)(Up0 z*S4NMFZp1&$z@u;sc!O}IzNqe;OFrD$=9}je#3m|NYMmL{F0Ky-VN?un^XCB?mr{B z4a!c*UiKmXly$_|(o%^Ns&k8zq={61QSZMw9xfduvcu-5i}n8jK^hiX0j@b#ApurJ zlBD<7_nDsp1BT$=G1zRQbn-H*{wEdyb-x^I9eW+0xcx#nGK#0PWxyqLl=LEB$+zFl9?E1h*@ng&Hz#Xnc)~I$nrdB zShP|izJe_53TvlGGuP+nC6Avb*WFUIoXXqUZ!o5OJy+QvFc%+;7lXCd1);8N!)lh$ zllCO`IxFc91J&;>>YsnwgYBZTv+h}qk|#5hm40awS5(Qobwwwk_x*h#^8%MmTq6D4 zUEnu2(bP)0nfaJ2ZYgGxc#jf?pxi z0%yFrPNY)Xx(dG9L?G(wX~!0D{oMyc<<`!4(<3##ChHB_s1efX=+^)4AB~I9;PYgppI>BDeD*-o5vkn5$_+%X*Ce6 z1OYkn;g;`}?}%3l69xIF1vefxxL{0VRM5EejR(UQYl~t3wg=E3jQqpZ;#4B`)Awek?T0dzVy-oC3L_A0 z&T1^36p>=ypk+u9B`1Wpwb__;E4bC%KLYYRJ`dopK9<4bd!6BT@cLiwR7K^m_{_E< z`9MAO2Jv}$y-tf^ZJSBscEUFI^19tF+YZb`3nSbwK$r)`V7vQ>d{A6nRVRlpORgVS z@5UI5MLY+#ofrKF=hycn`eJ^G#KW2l8nEg}Ei&HMYuXzg38jJdgh6irzdSqIPR5V> z9XjKCVvU#2gNT1X65wQKtT*vk@S`xv1Xrk8jF8BY!C%0Ocir#*C_tJxE8Bd&e@K6) zm*XGby+e=P*#3kO(iDb>3LVYf8O-Ovh0D`j(dF|Do$lQdDOm+64+)h|5~|$NUpdL+ z*}N^52D@^rQ!MR@!4HQLU-Gcmj|~Y`NOaOz53bLVY?-t!nmI+0)Glv8KoE348POsn zE3P`x#?lTLVc0VEB{NEoh27x*-|za)of*P|G!3#T@l=j?HI#o8exb&)A*~MYvg_Y< zez=h+9DmuFks$4Q(>PzvK#F?lj$81;l!K33e0XZxE!;kBAMixQPAw6dd>ro?;Cwi+ zceOL#lZayJViLo?91rlNeH=co4ZoM8i&lSJ)N4UZ{5lyPZbF6<#nKsPH3@uB#cSQA z9>JBONv4yn{JxNcHyc)}9%N1cM>RSC;)_cj2$Y=cZ()X9Y0Ym-c$M@5T?8r_H7qxb>#f!UJLX?2{!dd6O| z2IAx!WO#8wv8pm7#^_x1jEOOCaS?5)D}5}aKe06vVH-c#CK(c#!>~u+`;$078n3Ko zM2YkdoY-r3M>@>?hdhY;4D5YT2k|2Ed|;^MFJf1~9-~3g`?%6#K_!i&^T)kPng{zn z_(dZ4xDN`N4?OB!4-_nBTl*l?kkA>D9C9ah#*^BG!U3`mg2m>QL`=HFFdbx=Fmh9C zjFal1!eUT-NfNy%rcLWCnhZsmV7_v&wL&N5u+{`Y+`_^W0g3D8%42rONI#GR60N>_M$?H+;H~&F?kCe~tTxt5lT|#G zVM^3gDE}!@z<$5<*KNXk<4O*+*m}EmlLNRvvv}BCfx$NX2&~OLDU+V~T~Eax?e_cR z%j>hIJH$EvS+)ai9|zO6Qzz9Mobui&vmiI08wJUo;`anfD4`vWy!bA}{3|-(Qcgy= z+BpRyt=0h6a5iw($r=rt7e8p`H;b*8te>o-FQ-8#rHqd|-wLWLw-z=STATu-^s z%Py$89&^3yVqA5!^N6x9niom+89qSSQ-n_y|5QAK#k#(SInXtD%R$V2%ttcu4^lcKTlnQ=@+hF+#JyP396Onrx8SOMW4LdWBqcS@ zlTBM&g)+!Fi9q+@4X5EZljf|IH75mJ8)V&6t+oY&Z3wkRqu#bICL*-4 zSOrXtv@u?+75+3Qir)L*19Bv+(yT>~qGo=xQN`veN6~EUMlwBH=R}<9%-2)yp?w!$ zd0T$L>)*O#<)6MWucG`%C>Y^VsnGgEBR74zvpduH^4+UW{M*R&U4c-{g5gAd=iW

ZwFuSQo#u8#7hSZ}O9cAxpP@+0Q2$Q*)^sGr#Mae+wk1Schcfw2U zUK=jqF@4dQwtAE+2A{&V-T zu%0<#ejLw05$-dPorcYZmQqEdIfO~t>Vy7pCChfRtJv$Erc@%8X-~9g7AF>G9?o#N zOf7>3v~AWKoeyN5%DkOsdmM&0T2bU+EZ#!B(H`P%OkkrN>sOS@+JzQuWBqxGJYn2< zl^S5QL!NeySX!bW@Vc$W>lkqJ8jpBvp6M>Hm*`BYKUwOGCPtg#uBP8~QEye$;Hb7& z+pnF_Oq!z7iC5{wt90VkxZAzM1Gjphhw5C9gS_X7lJ`8p(&=;d+t93!ht&K~3obu& z&hbO*e`d3A+q9JzT>p3{j|D|KmbJJ@-6CS0sZ1*APzykGrER$av|3_fssOUq6v6k9 ziUlKE3Jzh;2V+D)$cIcaV59)Wbx=a~6!je04dyO4qZ#MC;xx}Tlg1kGJLrFG%Al~I z$tJ5CS$ROhRDoJ=uQ+oY|4qXZ$!-k_tevy*7J;)^G`7aM9g?SJ!!Mao9xqg6l5L0E zFmCnNaHm74mR1NGOzVZO3T&Fq^R3pbE$hjKa&k*H)7HV(LKST(yNFw9T_z8*>$&y( z2FrTe`p|l9uhgBec6K|r-Ey7vM%#^{>*Sll*QwW*ZZ+M>-yXiL zbep!T?Jn+q>)oEarTato$)CyIQ~Hed2>&(VYu2xY9+4jne=YLW(n0PZf5cJ`O=;iN z{=xsl`flVO>WV8%AJndF+a;K~ym5rGouG(t3|D! z*{XXro>OgBYh1=h%b{>MDp)Mk;US0dK)4j)`8e^VX{9!n2KTIHrzH!cTTjOYUA5p<9{z) zXq69ztWO{ngy27Qt8N>x9k(&IuXfL?qpJ?aNHTAply(KhS0r)fGzG!=nOD!^-lqR; zw$cl?(wq+8><~4d|KD?b=WaRC(Zl0^oY=F0y6lWU%%{Y7!>md)wKtpf+k2yAqiT4g zNN#H{XgcqQu-f(tVafwQ=yWB8gN>rJFHvvF^t zxS=OQob}XUe{K*OiaSx|ZmOOa_2wI&%wlu?ShDfqg3Y^l9(+rxcC|w5Z?Y=3Dm=lU zCx^sjSET?=5Vc19>G|eWsdOcA%R5gpm%aN1)8+pXNT*UMEuQ$784m3n-_)M=*xfvf zhjQf|GYWd+V_EPyVXxt? z$zIbks!hNN_7?7z>_p3iwx{JG_z>EwJrnt_$O%oomEFnh%rcNeGBf~!l2&B}WQ#H| zph8rN$kAk43Is6p@#1I6@jRj9cqWVYvQj!w%5oZ?tcVZ*MTrt<5%AZ~{F4Sj z{j{B!3DY)%bHKS$p%s^%|Gm)9haG5%~?_h~ga*!-D z5yE<;CnTK_@R5wj6eCPDMy)dt{cjkB5U^36 zO^Ff{@B2N->HmRbu~Iq?Ukrt|T-eh%8ctu>Ix|f$OXJS-N-Ml+v?yBYpAThd>4|i7 zU=l5^y>w=#v2PZ@z&_Nqr9ELurCM8)mo!$wFI`d$w+1myKGL`f4P$GJ17D(uQqsw? zJOX1frx_%2Y#P(35D0`ABAWCnV@N25=$J%jm3aF`nF+=;!Avq}F9VsKW_CY>185i_ z6y&i5(snTRla16lWVm-p0t0?j=P&-?A|i`c&rp=ttau}Z)exifKTVB5H!|0`QwK(n zc+P7VbH#l4g@zl;V7>8c7;jv~!Tx{Hl~7hTK7<&0Cl4DdAnC$h0SyZf-wVs7ArQ@` zG-BMn*f7F31R>hbnvL5bjUL6fV^+QYn%d`htlqNZG{RnVk*k@w3)(_o89G3@SavT%qzLh6^@eJ2QP)sM)gCnvHtAyQ?DB#fT{6VH=~;X1mQ~>yb#< zAZM-hOPi&w5>t|PNJ#n@EIP>@Ydv}o!nZw277Hm<@pG#)OLUjXTAVJx!f*Qc@GC$&^V?ol2pJ6ikWapwyFSA!Z04rgEj`tHUew zs9dVGak`_Xas%81$A}y}#X(Z`x^Th5j~Fh1vGMUdss77j;7*7fTWPbA|F?#ENHyRq zL*mJ?-jgI#An&Rf99=Tx=>f(Du{1SGS({a?ORMw33A3lOtD_6C0&n3F8;h%P#8#~} z6}TdvFmQXEiaiYDiFxK)7-&cUTNVM;vdu*`6?<{ygFqXj%d-MhV|I#8MlM zjRR~)9_V#LvOq%~jAIEt)rRl1NOA^5+8lP&I#qn{hV)iR)xFhPlT>RhfL~!k?ICN; zf~T@GOIizVEw~kME1Zqw%>HcvB+E*YOi^2<&b@YM#Aef?qER2nX}LOYpBmAurk*-4 z92hZKo6d%_sh%WxXLd=5&W?^w!}G@a0^YOBM3C$QAI%0P`N2NJkH>P&;zG3aUy~j4 zH{Te|{ou`Y7xkvnsFY5X_V2mj{CQ!wCEyfozMj#`+q&UrTl*KS?OJuqhh4!>T(z)m z(RFK+yDpE%Tf2+xmBQM|oN`|N*2Z%;&+~Hjp00Zr-3^C&f~~`~Wt#y&XWlvU3Uk!_ zDc}c5_|`eu@p#lsWPnJdf!S*V5)J4{He!?#QDGy5N``2MND3P{-cF9U*`xq4A;Ck; zAD34b@L^sbkW+#+wgGX}-_-k3-f%ckPJbysEk29cp2#`_@nc{D7<>tQ9yy1c8#SBL zDM0Ep*fkO&^iRId+f!s8cm8;U4B2eyl#%I%MaMMh9czBxF=JghS-)OP!!NUk*+bkP z6s!jq+J`#S^tH@((%!g?YTEm|`jnTIDc^u(H}L z5N}%GAOARJ8JdSWzF~uW&<9Yg&IhJO5GTkqS6P^)SE5eNEs}xh&xm|vQe~IRf6imf z!g;qo@UK7l(j8wPczCT-mBK9!=qZ#xT-)@8FKnq+v*@j(fBy05dnUTOnM0pn77`Pq zGufG6wU@v5)c$YEUaY^DU^-iYbyN(+>Dq9-3C?OM6nalF2h}vJKjjp-;n-*lkpKcs zDUC(2UYYWE(Hh+O{$ZlGB5e#-Bv?u0hkBnmNr~wgsTO_QO>0T6X(?1dg3NHhzRrxo zoT&f1_?=nkgiGOCX-#-@VptjuZ( znRHD`Ux8mnk0lPmZ^Q3$-wnRbzY_j~dKyYBTH#*jzC*b~ok*NYa4r>obB(lo)**yNlHi&HUs?DELVPU!ruKP7Mx5^VO?NTYYTYxpLu zu^%cn*l*iyL$;Dgvv-EUD3}EM!8AAl1TuiY*RBcO96|#jxF-Zdb!gMwr&tJBku{cu zG_woi3y-2t8?Ind*EBRfHZwN#$`~cRe7^VO$uX)RUU4_s&~j1avdA?N=I#h2>xp6h z>FVl&U3B>YlHg3Oz9}F|#7}YRu%~7g#o6>Nbx!&g%x~C0)^l_^g;;zR!d*_U5{j@_%%rL=Fm5?%3uFMj!*g~jVhG;YzES4?Is^Au1(<8$y* zx4Ua~k z9vP0Hh+@T;vHGc0^qYtX#NW_MTGixq;w>WYsA{R0qsP#jW7n{3sYvDIvAiKJNt$$? z2%wjShK}`;%1A6SF((}br8Cn9moBZ82t%EhFII+2A2WT-e7k9)^jK-S#ObAp5&|WE zi!Z;%yoMjl-^+2!IH;C7ElVwHE%%we+OoIAO_xsPk*WeU_5|h)E7r`5d(?jQ67_P+ zhQI2u``;M1(8Rv&$8N-Jz_RT!%RtTCHP zK#$uu?4R&I=4TZDq#ya;$PKW>X_hTkNPA>ym0eg|xTERETzzt8d@<%e&#_=s< zfh$sp3&eARHbutWd1wf`3_vV`q3{?>HE%0UtAh?CB~kEFDx3Z z^@?I5thl-s@GO_&!M&-z{bja<{l~_{osNp+w&c9`eVI6Z|mr%+L_F?deJ`m_4Y& z*1cI83J!x|@AHf~sD?4b4A=a6xTes;=7lRNyh0R@LP;@Op~Dxo6e}_t6xMq#@ox@n zls1Jp$OtSa@HVq=IlBwp$?mk>F5Vh>2z^~TSF#SbuW%TM#1_Szprt~;GKdC+51?_h%d;zZzvs)smo0Vvkg(tKUG#f& z!gku?<&Sd^aK||`Mq2XhNFaYd$8tBByg>8&$XE5aYwpdy9lkxjmwhImPyQ*X(LQq= zt0fbG*B;Wmpf7XR$TPlJhGa&#AM*aJTyy&2R{swFZa?Ec?e$KOg!)MyY5Z>fWu6gv zoyT{=@8?hOEdMo!&jfZ6x?);&x8@+L6)?adI#dU9$^jkZn+W(>Iu=G3HZc=6UslhI z5x_J?5}8k88-*?uGfqeh|((A7oixE8LTVgW>GYy&lH zXh?pX`hz(9Y1Tx|rWa~<{Njlo%Mxc0X^1R2ARBwK@m_P!V(eLrJ%R4&4x#1~gSDXQ zs@YYVCI<8Gu`o6eS;28umk-pr-yIt9`K&IP)&aXXtBJ0-Wj&`CXH5zZ8)(-48XD3~ zG-N84Ho}*`fLpfg+<0q2@qPckhu`?~;Rl|b*$E#pi^0n}F1i`b`{A~2mtE)G^&1FZ zd;@Yn_*(b+WS9PN;$7(nfVshZC&;6|IZ`22p!%?&6SY>Lz63cBMF$IcM-K8dZ^(`3 z=nuM^Ft)=@MTU_;#6Drv>gX0enTiGgaORwKC?9aMWX+G0)8cgRv6JFSL+MQu1K=6) zS@Q20S{cz407rq7o&)fydL+jt@s;=-qznvM!nu%I0`zOVpj#;y({a523u+NK9EH|d z755U^;Ez9c%*aKP^#ymR_xtWoGmDr-wq?OvnOkk<2TZV3*b$p#C%HZR9^papLD&9* zAhKA#ZEo3|M`7ME73J@W!>K4&XLwynME69WilV41nF_%C05v+wN|o?d>(%WE*XDe>hf|bU?xy zn;oN$X~%H~>j<_!!LSV14DB1ly!s^Z8xb?02RE+{y)sUHsXaY2<2}7I*qSdj^Re8i zjMtw|`O+zWHViV}WEj3LuLTq6v+G;eE-G|ItFaGzJZ)Dzf8H{z66QCSFu%l>#XPVa zY+z=Lm4e;=fzPJz?_fYd+=RBbY`+MB7PiPvf_sUQ9-xIh;y1&0}I%=K@Oi9mGo?AJ+>G-A-n@(+#L#nSVR=pj{Ci7SM6&<}Y z@G~8;6*34ebd$we?4;;J@OZoeKaqm&6!E3GvEECOY4qB9Nvm7k*4{m-$5KzFm{c7; zcxZio0-KfiP~A?Bb?=Ei7JDkj#G2>O7M~Ks$LiAL3b=x-JiJ23Ln~Sd%dHsjLT?@N zx@Rj7cksC5A|c@_dp})Ms!g{AS6E6xI1ro&qTn~tPXLRVay96|Z&_F_cmceiwbi-$ zTa1SFYZPy5U^S!Zim1V@+HP%+#%L1J=bDYMl2)x1nTbI-Nbb#!xg2-CKP7r;=hxJ4 zHE1ONVg?*cDOs4Mv>OOjc4uLKb~HPkJ)SjX9puRDZ1ezk{;0c&pvhjVZqhdCoA%;o zZr(&r4O?xMO^)67E`dv^$7@NO>W5DMsQ*V;xzx}6MR(Dx1RDV&e)=8#b@WZ$bAK=F zZPSESnEN?6*GA6!4i%d_7C!0!W=2fDSdPTC}8>vGd7s>JXV62s66&R|WIUy8TM+s+eFm^RSEL|9&rLe@O!6p(- z6OuI+{v`j-E(vPX&34kW;MrC1=z@mq+&#Qs9o%?q@6E$c=N$}dW}Nwtc0Kd(qNS}$ zObd_x=lr3qSAG7SZ{NDo>Z)>^EBPAqt=O`tGO+3ci_49-OIr7qZ%%!^TzTL(@ci7} z8*Y0>H?u+@WHGbLMkfw?(>1S4Gqh!&THs%eXqB>NIg z-;s#djBuVrJfzgVl^lc>q%_gx3K>YpD%DH@#!NOFS`(w!h!rGqjRFb(kx|@vi@E>{ zvz&}OZ|Y788R+#25Zj=A77PU3_?5!1EPiD`g``DPsb8?#0Wz*gtBH68OC@3n)5={u zw@qu9LUHk#XWPYR^2W$9Y#u)|$1+}DaTCU`(k=ePOa)(*T+)@XP;g+OfWSgQgQe*? zq(e<#qSVz1V{|x1hhua&hVSMSm1(&1mnrfF?!0@1yjLi6bv7{tg%r*HF#;v=T^Qa* z8YLoei&B@~QnhpqV{5>fa;7J`Cc8}gyQaI2cQJVu4s;E7jgld~3#z=7i@NHJQ+LG+ zxoBoZ+>(omD-y9>G+k#LdNEPW6#FXC>LRFSIsm;(jQm_K(GrxB!lVW6w?L<5)UwC& zBa6vGL}97`V#%UX7$^)EMhm8i!ejyMFF>+<$8_O%!BiOT{K^ixFqlz#OmOww66BM; zJ+4}5&t!3sLCN!~^d+>(C++_uEwDlZ+9R*3OoFa5F0y||6dyIO0Vl=5c z=8+fyYc;B01X5Z<1L4FHZidGH^DsGDuuHRA2zP!v)nv{Sv&{MYAfs<4VB@R@BirY(qB%AszBJVICK-{mW0--k9M6-5{?GD_U8Nio zqg!&Fsg*06oxVP!qX#=X*)=+GBJO1o`A`7VSe)~a+j~n7lQRV&nXpstu_MAHcFH~E z&J6C6h?t<??SGUm?G^0(VXsZ{4p$cXv&x*J`7j~l2@XhbSQ?ckrM=QA$t)d69C(N_ z5B=E|!Z8>QoHQUeMgwG}nX^BYVW>^a7=}~+C}8=vBRc*PoXg{-Ea7Q_>E6)E_pfex zmijw7&i;}Hrv6;Zym>7xJ@fu0*w)urxUeV-Tr?EUI-uA5De^{7OUt}QY(`yM!{i?7 zSpzS z*x&#Q8MZ6+GYxtQ?z~A)!JS{xQxtNFKu%Ero68WYwqzuNaOxoRL)6sf1zFArpKC zXDv3Yda%hRPx<{~j;-@;hjjpRoG8=81kp)737D{&euVcC*PM`~zx+NL%jSD}@|ct+ zzPESN`nFg|c3m2iivDwywwu1)lJ9A#?_U1KE9WH=?RIWmYTc*NouAFeD78W00>EU$ zlC+cg#~fPAhba6A(yft@>N4t)jO0|ColuLPY%w-@jnWh8=y?OAbYzMOY{C<|PD6~P zfTc+BN6}9Ru{euUinBPSNMtj)K#?rtK#LZOB6KOHv?UNqW$6bI!{kYfR??t~>D1jp z(Mm@rNC#~;Bksxk_OM{HQ&wPp`?!UrKirXTf|!~7^z`((0A~{?Jd5QpNw{m%3|A19 zaz~vtrH0(B2=V{Bg?lWM)=AsvoDaA@=YBxhQ#)v})Pl9pW^uD?voa!Xb!}BXhlDqx zClxdyeBALY^Q`lA^t$t;>rZaJ*VQZaDqU)CZHaT-a;=jup%zh1sp(R!3wDW|Ph0~p z6bDsPLR<&eIbRk3CYqPKmMKpQPh0+v#T*d)q7qS*#ppaIYjrt2_K+>&j5-wdB4&;0 zBJ&1u&^72`gU(1Ks$7IjO+`}bkSP5_k+Ec|_!)i725mQDKC-aEjLn8Wx{0o+t2I_6 zF=Vn&OarPJaOa;?GZc%pu5-AG!YYENj$xH{Hh_y2n7&4ILgaFLJYrA@MT12Ql`?S) z5~3D@lro8qOsTIL?N|g#z=~y5QdPVvM5=HRNk?LDBrFcgKFV$ZfNEBS=+I zao&rKpWhfOIV{N}^mzhhctzv*hAs&vlP+r@b^&wVo~5!YL1ff?jP{&ZM){2F|5>aT zz)*)`J+F<0T+{DKr46Lg2HJ>$(9DYX1GSB8vvAHvKp#ztsGs@uA(|&){w5YHJXsqV zc*q(?p0gPe905W3_OotL10Ov@Jfm~$os5SfHZKkGkpu|v2&Z|t?;D8Md+eU4Zw!OAfHnZ)3 ze-4B)43FNPbD(Jmj#0lP#Y|H^VCHy=l{m}U-x-7N1xK?)b7Qcww9(sJ3^^1jlyyOu z`BU%ot?i0XAjIgOTS`Gb)l96$JOuz_088>rVi;G&c6TC+-<)gc<0YBI4J zO@1Y_ujT1c`L@m_vqvqNJ&KIzF>=(BzNLNixIRikeUyayR(Z*%t(rY=)vV51HG2Wv z`KKNv$F8!F%dE=N)ARK7d?(H1BLkgu3A9dY3`oz$==hjt?RK3xH+(?zf0 zqStVdv?=2ns@9BXKW$t?ZK2Wb`k7zoR&uC{n(x1hsh32+{lQZE;$=h(s7nXe=;WBv z8rZ*P>zW;Fm^EwJrEOBG)ynm>nvLwA648=FLm1f2Oq0J^C3zO{y{Fq`0^*5!M$FUp zS!&Ci4HM`+`11JbR?f@~u35`TZA)F07hEb0iK}^P*yrh3zO#?+_0he)Rro&saKs3b zukR$T5i;Cq_(*8yFZA8c&h@JZZXkoJW_b&D-lp%aTD4()lcii|w<7-L^o4H$(0e}C z+e-vJrtAIom4oY_0!z-k1{UL23BR;6uN?|WK}nLjj6W=9!xirMhClh42~6c1hzB8W zhm#wi%B#7kR7dYl#XED+Hr&yz@m0C#(iL%6E*hvaj;TaG7uD*FeJatHi!Q+(eL-SP zW_90Sbj>0@*ST7+<+42BQcKsaBNLNqwOOnjYcg|7m$Ye8z_J0OU(uC}X(}95_mdwz zgH_$xnJea#U0Np`?cCpqI?0%S^}4>~s#VJBfz@bY_2g;xYOZZBBbCkxtrT zVd!wi9jUo~h;cAPeufy!4c)SqTijj>`pruTl^z*sla^Xi=AJrlIXGf9b5vEe_m-)? zq8U-0hBxAW@JTdP6OCbTT;QDSIXleFaaOzsN|)il7I)#w^4gF2uK3i-x04?rAPWe_4bP)4B%R52F4St|AC^kSDuFZ$vG!h&K1b?^&(I$; z7T*(-)GsOdX*7h!8`@}}et|aQ`pzUzwJ}fS3r}SY@26=vemdmm$&lY)t$+wUGC~I; z^vwvpQJSeUD`av+1d$_hxoYMA)$NE;a(7j4sq$4KHMHtLb+|fOovfM*CaBZ?1m4?U zW%pN)SJD0|9L59FRVKpwb5W<^g3RTj$rW)v7j>*iL~_xD;eu?-wDf7wwnbr(XfM+{ zP9_pgr^6EPC%H);?kAr7QGO5qBi_Ul7o?mkN0Kc{ZXh>I)^wf7P3HFJ7?2Zlh%PN7 zU@?&!t{85}{QtWf(k%rU)|3h|fiN_)k~uWX{KjJIL$uVx@Itn8P74avc^k&5h>MGM zCYhp3Q8_J13;p5hbB@UW)eT7&O`kJ(4r-L)$}irvazynztZnBt=6Uq8#niX@quZ?x z!n)oiZBAvDb5B0Ka&6DY8rQE=g46-&?1vw{Y3vh?$dEsRd2{I&IQa0g5ampS6~imc zQOuc65J81Gycxzo)JU|YfYPu>MUvWY3z-PFkvB<4_mDvoJ|2p5T@J?Zu^F^6c^!BQWrpxS6;IqExLP%HOa(?#P zxap4tsEDly}Ikwud3=-^>kNP zzk8;;XNDe-DFoytGR7B!wu6dMlmr+hiV>MS6xbvS8%=y=9X7j(NjwGwgh65)li93$ z5+a*bHu0=6XV1jwhDnHrc#_Brd+)98aY(XzcA)CsuCA`CuKw%4|Nr0b|9(_VsNeRE zLicPIDS}Y$D5zanbufF?s)GYpu6xcKU-4YRwc;b|*1m{v{e%lHi3{Uss9n7FJA_VE z2^SHds_#ngM&`VPqtM`o>@__grkFy8G@}{L^kif)U=T5&8z98Oo=U@>-zOO$Lcvv# z4;zH$hO3sp-~Pk6b|{@tPQl`}w!Dqp=DCl%PqT1iRFWGJxCGHu z8t+V{p}BcN!Z1pLX2O^Nhv7d=rKz?G0XTKLP~mmNAKRMEB8gKE-1&)DcfNYxZ99H+ zRrj5jj(+;42R1IF4m`E%z$ed-eC>13KJdqT7WF@M|0^>;-~at{pI=Xq7ydZ2l6nEk zqD3^wtLDgJZa&T~sd9PLps5x#+vL{>gUb1_R`(k?xx_&8Ms2$hYjR^2F>X-Vg5nZ9 z`U_6k7@LP?P}vlE20b*66S4%>>jZ$(3w1WMAg8bjzX(D;F8u(i>dHm9$>T)z!ujWs zpjJ5~vl#ryar67&)nU2zW3B5qoKXcw@qS}Ru+eD1y|Ny`B7i2qi{a7LpbNlwa>>!P zU=}ZSss$J;AgO@(`UkYP{TTDvW5)x4G99vR|KMcd9+%Gu609&GC9x<+@Ox2Sc zRCro&>|fB)5?~l388Uy^_!EM^Y=?z^_}sp$(@A<^)D2@ zB7Rx_O8m>o$MR1Vz7hJm{!H}Q!tu~|;T615I8*qbkT*(qnRjLP`XBW_8W=CpSNTB) zBjn<=)rtv3R56~QQhE-cuaz=mDouNYNQ6iv1SF;vA_4XRay=LU2LJ^a9KrZ?rb`MA z1j(0zuLge`q=Fdx5nNnsqj(XA$#kJP?9jGXaL8b)e;UcJ(yr~GrnCNVI-D_xtRJq- zP|5&S0D*biF>{1r-#R?6fMD!}!N`#q?F1K&Y@!73ko^6~MSGuuxdgOZp9Z_GvS=CKa; zB*Lgkq3D~PA3ux1B@8^ z43aP;=n0P-rwq5TKKJ$6d^*RM9iH4e+@e1lo@&aiyk%m}1mG~VNTFIh6v7;}P`bFR zcZ~5LzLUy2E~vx#41zuFyoa_o8J?Z{z9=qw`CZ$4m)Fy&>w-$K)amzKx^Sj&S%=2C zeJMR*aUe(?`0^8u&+dz!yjO9h!t)$piX(AfTtC*X(i)Jh_=~4=Au-y$dxq;iP008o| zc26AK5(jb9(7}3ri%#nBvFe{_HldwXfh}yBDDeP^5wuNDzIIZ2%^A&SC8(MdEyk4( z#g(#~%y-ewVKilx8{Fysq?>e`d3s44Y>3|-C*!8V19XM&**cOaQLI&UM!>$ArJ%;L zYSq@LJ>j$y2<_cOi!?FO?3X5Ro?|O>EXNkLBB>~4n{O1ed_xTkde>#1lpaaDIhxCI zx%IUzwUL@ftc?M~-UU_g4}CurCejn;f22;Qe^z|k^>*s*^t(k~=`S{mA201F?ge|v zz0^n$)xRBy?kVjp`w&+aN3mW{lqca*NbUyi)LG ziz|z3YD2YqbN3b>626f-PVl% z9Z0$X?;LtldohIG>`;_+%E!Az3pegK_!pvF$#)S1x~cjDnx>*;ra-8IZY=pD1poyB z+J1}hid4Ynx1g%%Tf}`LC60j}TeEbnoL~S`9JRoDob*p21_07}0T@IT7|*S0KR}3) z3cGyM2)lhD37UhA3bcI>T>!9)fOV7Sa4A(xTRn%W3R=z_^gh!*KH&55ZQ`myhq;6`ht z9WZ{%X}pNU)ZZw!cw-JJ&ap%VoJrkS6YN>6^W zXLU`M6fbpP=9P!saQkuBkB3Nq8$;)BBP0Ci4muP{JW~`y0T+V1 z6Tkz<$mvrjD^nA#(ecf8uIqW1<)!G*$=2-XX|RIPLc#3Z#TN=(5u0>u(fw$Z#Xa4=N>2D7%%w=!Br8aa6d3!Rnae3xeD1YRI zNotyUgfPjqbL1~%;m9k~awT{p+nRl8*qkNU;k$cT>MCHu_%8hW`jx%i-j#EeF&B9z;?mF5@HYF1+F9}fI{)id~fH)wj!#*FpW5x+C}Lw0XDkwS!)r&eIij& zj*5DekmQIIixN1ziP8=M_OB16F)!M&P0(rNcp)~%cn?7j+kyJj99wcuT47sUq4`L6 zCtE@+quF@s7BLx0Si;P2N}srY>FTY;Xzy~cXt2NVu~m(A)FacckK$y)?~PnK`1uj= z_@ZhAnA1;=4D?)1(pU77CYnWsvOEQ4*&zRWE)N<@=!yqd1D4@pz=fp#>p22}Wv0%Y z>94?%sq$g`u}kIH2*a`+N%%QFfJ5s6zemQtt*m%Ryaj3u19uE`oRftQ|2x3>%9|%8 zoV#kX%2nK2^?HrcFnxD-2O14;3U&vyfSzJIxTI_-Y1PmSy^n2heF`G&@6%T@E7&F6 zQgx}eLf^=Ig?XI)d;N*XXva5+Z!lkDzp8yz|3>7y%=7F~?x=c9dqF=D8Si*qeV=<@ z{Xj2`vY-Q_6W7;qTj+Ayc+P2;EpuASa@thNX=NF=wyj0$V#oc&Fc>DcxbHVU<$h4! z+rjoRb*`>9B0unqCx5EbySY8;E{*C{maC*+4aEIK#E26LC&%H_@{nC*bf*psh-57Z3sMG;QI-I)!_d@Ma z(O*v@Rjo;d0;+a|^ol;MzKsZ=)N}e2YKPUSS^6hw3hC=zE!wA9#47O~VM}W>>Kx>IZ@ORGNU<_z3!KHylJ}R_+{sRL%Dk@63d|3Ip2jz_YwG96`jnc)^n9f z#$|ylqR^;7uo;zcWzB>~^q>c#zrRumH|DYnwnL#AIC3w+2;3-kg78|!!4<|?s~Ofs zWbwhb7eSHOW&)GnmIYbfIeM{JN+!#tmK}%dN;Uft+!&wC0chd-A9+r}R6)`H?vMrD zX4$li@=$pryQTcD`EK?P<{z?Nw8J5PH{S1+NTQxBmvb9>Vw#qSq@=Qo%fvFpOe1qm z`04P|>eCs9H+$2))*9k+u$o@MEK6Tzt;LOO09 z&%RWC#e60EGxKNJQ{@EVcF~@oE6kd-#b!OZ?(kx1u{_}Z2z{;kk=!1Bue4j;qwPuU zHg{)6%Hdt?L*ZQ+%Eu0Zd!&107kql)PimSRpyBf)h2^+pq>^!i$Q9#+$O&;Vp~d3~ z`1l=0u+y;%J8WAu(*{E`ES=6}1G!uliiBx(GHifhSZEn(!8B(EIL=I^)19goP*p9L zNoi`BgHI|4e}@y`41C<;;LPC!5M}gAA_Qm`!EsfR5(&c~NVE|UMYs!moYfQH4#FfD z@O4|v+VEo2=`3%Y7jNaD7x>(fapKlo3T2B0?MP)n1N$}bqV}rx7SxYlOjn>Hh#WIS z6G-q!Z)HiDCxAp`h#=GjUYn~7Wq_R-K^6DFnIr5DtHQhh6#@fIInE%mU?h7M)pLZ_ z1pH`rKaIoC1355)DmqFzBWLFh=EifUa&&HeY1U$!LU;g8pPHV8ZrawC7J!>{xBf!# zqvtcIKnZfCP@TBxM89uh+jPyY|KspIXVVDaa5KR06+21b=3+j07sU`1I($H z16BhhuglH+IQPq$-c&QDen&hBNuJcbMD8zg?xHePwZ7 zkE`78?w9)Id71ufqu$xKf?p%8kuQs{$XuRXRk!=D)vh%M`nJ(K`JK{Ed1q*6_)GMt zG%7!>p2)-nwIZ@1Uxp1YAllrb<*Yynawb86;c-`CQfqCeQe4+v>9@xMrCeKd+KeIm%n7yQ4^{7FqVvYs4ssCg5*UDWe|* z8VRzDM*eciK<~Orpj3*-W1JTnz0YqBfl%2T1HxfL0~$JnSL(L4gW4~&vziNSK;yo4 zg6tt`1PyLG)Lo3dcT|(l*XXNXR73<+RHTL?y-F`3k={YNNEbqp-fKWadhbL^q=O*6 zg(`xSP=bJTh}1}j1PCF3m+$*~@44?f>#lXqKY5-tGka$5S+gdenP+D2=FcE0&8e4r zw+O;Nna>A*MWu1#CD)5F4=CGAW~FaKUts23p3alVy#1YAOSZ_zTtv|h;m3N6=<_t* z)d>3{>T571GGR--bfOl#qw7-7vBeYf6mWRuZ}-(TFG zdfxj{)kTtz3a(CBVDZ;I-sPjN?d?;vT+`bRgFozwJiAees@adQLcw8g764DrmmI2L z%6+A>ZHfj+3LgZid{XH`^W|MIWy4bFrqq7-#Ku5k6=5 zA`pH*RUvkAFfriKk=S#865G~~E+s5#Zxtdneo_{uimKLp%vF{PcYN?8Xl(wfLA8bhCw-XG;5*Dv@yGdR4jWM_1X zVUS%v*x~1w4My7W$&CFryMgsz!}KB~?4xerxEI4+O1+j4RYvnOch~+mqjvy$&MQn9n^zBCGCa z3-go-l4;Q;mWODppRRU}_`0_HCWZK|FRwDWCY?SzdPXe2+W1bkYH*pA|F|*wUc_4v z>gKMl!ypB>k*TX{nEx zr$Sk?Dyp|F(m7+$g0kaBo)Yz|Jp_?CM#%eN_7O*BYZs1&8R)XG+V49E6X^^zy4FX*G4+R(0;RS7};=K|2NC= zMl);ED)9Dg@jIdI?-pz%|B;Q%7VCc&CH^D#K110v>$Olnrds@OSXxqe?y<%1SBybD zB0YNCglRRHo%B6sH#ZN@b<2p4Oc_XcVI}{0d zl8KkY%WK`c#DK4U@3a31=6^20z`#z$iR7+XXV0YzpW@&;l5?kP;4*mJU(%**Ueu+# zl2iSHMwaeQ*P*zjG3rL05yM@*hsLiD<0RTZtX&(@>=XQIWB>3l6e{Yu2N@%JIG3!x zbuMeQ$#mwkv$mSvQdqT1c`T!r_y-=TPFn-2>RNj5Ds$BJoc~_G?gJqgO)w^u}uzz-`syujkQhoHZ6Rg)4cV zBEh%KnwaLVevMPS|BH#%2-?r0pk@rt%p$uNvK8~ruzIM~K+#=1rCXd6GkUR;(*to5 z#Jq;rl&=ez%(eSZhOeKr%pY!If4tgH{e=_gTw}rKA+V7IZaA}r-mY07UW`6})b`x< z^|L3p977762!~?y@QBq@VIN+9s%4hERx&jFS*08!CUf?N$CN#3Iade!KIld6-K5WE zKJTk6%h3n$R8G(Q;6p}16>o%U9aCH`$pSuDzws{Ommfec z+HH3j|9)aVCZM@ae2SKmgts+$s`-`5u*8bCe>O<4Yqq$I$#MR01~7l$?niMC;%e*V z?Fq4Vp}2l?d;5;!g($NS^S>`ZprE|97ev|3)tgyRQ`=BgTbWni(M8|Km03^`;$?GP z-rCjs-)t{t(--2`QhMghf=aG7ZnloD_RNB6wh&iuNACcBRc1kbpSRut?hs}{gX>?R z>xY}6tK)S+2=fcEe+B=O!7TW1Z6MJ9Qsv*g|5ioW(b*f~d0oQU+8d$>`7c>PO^B<# zw*#}V&7iq7vOBkvxS@jnDRb z2w+ct(ZT0(nrkV;?h5L{2^by5rB4FFJ|7#EX49!K-5&ap&aPvAUp67XHBPs%xODyX&IkLhk?$vi$3f zAnXiZo@}ff?QCR)p6cXW*A;SwKUp|AI`IrXb4PTC%)Pw|CSGJMxXlbxREAvocSiv% zLa*AgE3f7ZiQje<<_8poW>EndBT74s_o74?P$vXCz|osU~xV%Z7 zNJ({xcq#*Dv^gEm)=5??WaTO3cvr~s9nT;-`OXf=>=#|!qZWQT@($&hrK!Y6^|kVi z#PbH$21%eNDbtf5J=~P+T0bB2Kdj?7+3~ixH^U$w?y0hv-_!tt#!O zl~LLn6OOcM>u9bR$!jk=G^yBSzE_Ebi4cUu}+`#e1Fz>YtsqD4!>MFgW` zsSP|dKifqqjV?DTj@*~CF|wiE<9(e%Ev5TlMS<%Rt(bn9mB&5J*Pqmu<`H!a=z?IFpjbOapi9Y)P)@rkGLfNdNP9 ztifDU;|>)CIc?E-g8T6<-p4jMsa!F!cazj%ubwwYB(g|L-_dW2xF_@a&be7e7Yoc# znC1$R7@DE|qAiRn!<99#Eymn5o0d<6-UM`~{-Tuid%d#OLfy}{$gbp{Go^OhBYxps z&|O6%TP3-Vzn0VidHt?$j$~7pG_xSOnJ49S4Kl>=c<1!GLg7r>`Gw+6#;LCCa%fKG zT>{&K8rzr|RZ48`nr^g3tny<;IZ;It)}a3Ml1>dfxlMzqhC)zNi%F0S`MD?XWG^kM zCPCYK#^toe!%aLOCF;+Ew?zuI%DQffOK-j?>>7|dv2j+k-)Fb=O&V!nfQu%t#@lJz zNx$=Em~z;uKzrzQe?906$P^h9_wY?!*`4jvQj5%a>m?20*hztDguM;>!WF}z=d2Lx zsyo47AJLY<;4_>V@RDLLqoaj9ky`1Y9$kudnCgP^l6qKM)5){ws`jCnT(0QDQ$BLe z+q=6@Oy7Rb)LztozTZ4)U#tqZj{2z?s8fl9d4nV%*N5^q-)<7_&!;Pgw@Pq(xa~fN z7i)s*(sEOTrFsRHB`Xg5JxJZY7zF4`bu#OZVx;XQaTOk$c`FHNbZ!jx>z2LXvU^zu zE4i@3J9Dv-`QyKA%K~`RsR{Z6F)Q^NjvO0>#NBDQp4F05w?ykpCTC&KV7@F3gTkD{ zNX=I=Ztp7}LNP_B#Ut5N@uMGq&H4R&@WKoG&k&3zI;Ti3W64}mght7WUpJIZ5L?J4 z?Y9i*xb#iiV15U!o(gm;FGuL=N<7hhsP*$>YbYWQe}Io?*bU`em(}_w=N8s%$w0|` zibZPN-AezlQp){;6ntixg)8u+W8>X=|F7Al2c`=~kHmDt|LNH|y}vvL`9nV)of_?v zc$`bRH3v65DK4(-IZZ&G1|+^?Vlb>pqA~#hf`9j9(@^zmY4nY}IOGzwmOo$=Y`m)ZyRML|tbKfucy;-cni=f*7ZU%0|7c%5qCrlO{(W$pg|0n0Vs7&E^R z61wJ;e|h9z*70<7_jdDSej)K6SovQ#b1naGk$ z=HC|O<=y<5P5CAMllfoDURQX{U;kz*Te~IAi{{r_Xd ze>zRe(aYGF+K~T( z!57RTFGOBQ{ck+D+ew~nZtTP1?<>3CiSa=D>=dLL7`GXz`3`0B&0(qa&se$>F0QdM znQ!6Q+YbSKK)UGFJ8RVsq_>7_g=Lod30Y(`eUHGYuo(LdjmIq6n>c#1w^5t#bp@XWP|e?U)ERN!Z{ zx!LabcLI528lue(Q(~V4s_c#>t; z7uNf(nrWTZ%kfpFTDwls&i3;5{IVB;Cvm^DsBXmyi+ZQoDs9K$_O3d?a3=8+Z>7=+ z_i9cB?tOnoVx%g*x3S+zY=3;Vv`%B~W&(M%+x3d6XX-jy8%8qZW}PZ|*Yn5d0(-Ir zRNLYLqgK0E_0;Pr|BU`0`&a)Y42$j0%wqOY9(dz+`^iiVG0IkZ{V@a`#&M(_Tm93& zi5HjL4^0F}I4piWqNbB@G^_C_>K{$4RuD)S3d-v@7ue;=8e2#7{R%B0?_T`XFwkT( zT_SeO*LqyqDYJ-!BrcOw=MS3^pPHS0P*}D4F5d1P+01PWc4(h#8g1OrHipN@{BiGe z8m?sMY(X5Fnw>A0EwWcL&a?q>iJO&X?XEsR>EB2ZsL7;c=}`_HNdn%%d1kiwr^lt^ z*~H9j;ZI+v6H*8(R8XhS<||}vK2W1Z!8RzL6`X{7e7=^+}=0{a`(z8hSO0J%{o*#3}WVV~N-{1EIf@z<1K9B@fAI+)( z!P9KJov41X? zwHzN4S}@`9*CJ~mUZaS5w&wQ6(#5z%pZ*`P^Z2W4Pp=7Mv#ZGMNhnHI2hqW?WRw-!Z#^C1 z=INg?9GbW`{G|G8Y5cI63}st$b}RkjCC3aEsac*3!)dFu#oBxWx@k{3>-1jMzI>Kz z&#yQHq`Szk%n4Ppzg+CnMqJ`ady>|&=I}wlrPZ5aprx}qfn#K_FURl;pruk%0*3Xi z(A;m9enVrPgYr9RWHe8s#5`mc31Xnq3ZQAf65kUN|DI4CI%?*fR=M*l@oJ{^Fs$5X2Di0%EKeAFD~m#*TZa! zj6iqK`({=7X=c3e98h%03(@Q&g8qJp**GFUA>x93pUGEvlk(6dja&qO;Ozn(IT=_m zyW*i%8FZ{P|YNV2Q@~ z-)*nn**?SYqy^|#)9Tob+;XLeZ*uwdmB#06o9C-j5wodRQk&1}w6{y^x!<|;#&nF0 zf%dPZmc_vOyRXSbN^h}dH5i^gPHEP zO}R|SvAHY<@D+@4#=AZm)0Vc;ywlz{6qGi>2J)DhEy*xWXKcSxG2!PSw;|stj2w14 zp5nirqd3_X%q`*-^jm&H?Jl(1u?f4B2F-~T)OpF1;nn-q?fup9ZRBw=%`QBq@DJd$ zDav%(IMI}%HM%U2$5swyL$$U@2&Y*mbk%G47h_vTZRcluj$4*F)d>^>86%vkAiY|%M=J~+k(f2@+SpLDZKC=;7vdd4_ff9O}=)yX5?F%<-+qvUuyPN-^$C+ zQ2wk{gJ8)*KJFt*g#!|~frS@7G*Q81B?^dKDpAE%il?hgMHy?=2h zvh;on8jLK?A?6I*ck&L~%xNhyWj?Gn&D^QfNThHDuy$oeXZCyMtY6 zgjNg7kbT_iDHNn3G2;_-#RMTa!JEj6N8r@~G{hB@mr=oX;!knp5_Da&eY$p7LH${o(auXOQ zjZWsT45W*8`S{?#=4gA(vLtbCdXN+a`8M}zmQIw~5--NX((~iy}4c z(&=3qTkSmEnXwhnK~lQ68FRD0YfSWeYTTwTWd1O@WEXWsxFta~A|pq6a1rk*d*Ngm zbGJT|it3a*%Z4|mAg2M0+k#bj+XhVjb1YZbC-@X(uoy+GeU3#nzb#zu>8GiuAI0vP z3I0){XI{|CIAB9W+SQI&fs~1+kL~?Q|0buPU8;4?tCt-!2*2w3g`g+JNL#4<*E}y+ zmIIBmXvM*2)X(YC%B&N$wEa2`m7roK1%yxAhb$Le36zwco0{ojx(NHkXYlXt9FLV8 zgHoAsV;`ENj=Q)~x6S#Iz>PN_F>;%-)9+u%&X@tjlt6#(4Z0+J?{OQvmqo9~u&!QB zcug66+S(|0BOgV_gZ@jQYnQWaj#`dbl*@;OG?SX-w?b8;c>VRuq)W|0tu^KMp-v>@ zi_`=e9+XOEfYdIT@2UxJUjJYxM=4HElHQU}-~i9{3Boe>k^7{sOBxN()c~+X9(h@BhS% z<5bBl8gydz6c1xARXKKbc?SM$#BtTY4n~7z4)W^;@YWgUOIlrF$n~l5?u_lFLg73v z49^HLrIN<;79t%7Ahxcb3mOH;a?Vs$trf#lcC5i%3pR%;&3_Q=$XKo}cB|Fj=rsh* z#s|uMze66~0NMAxYB_YL_ie)$M)o4FUY4J;lhi`X%%0iKtc!Wh>B27L;MtA+*GGY}Mcd6o#&6_QR}0HL zzQT?2&<~_dp&3;q`h}fujd#bKhagLC9s~)F>9F7XAxNB5l4b5F9U! z9H!PM7A&}fSNtPux&2)95TCDzk%#f&st>*7LeE*l#&-1 zuK-BVH+IE7Qx$0R)FcMwKW)_3edcfwT@Q;Y*J$Q0JbYTB1h>+bLt8P1iG2)M-kfMM z5Vs$z(CmLD{wD%D`^4vE^|x@cSP}~Tbkg9B)Au3!B!eXWJw*8qak;Y88A6sAQ_gs*wkiTCb!izK}Ev`rqkl+M>lS7|uOYV%QE({4P6BA}wd50cqna zJl0RYL+Ak?R%lpLY@5cXab!eYzC65J--Ao22<1IW3h%k)S%|4>{oqneIyCxs`6a?Q^_sv2&*%u~?gqT9BykvN4L|CGd*+U{P8qnc0 zX=Wh*$R)j0+h-Btn$ zq1s=SQA}tXp3l_3|%R~c8#s`B4q{YVQr^bGPeiQZF%04M|8|qcfLth%Z ze(;#t>Imz8OXaRJXslr+{y7rnvvIs6J2r_m8Iv-W=n|=om{`r_n7J8v#MccL+SzBX z&4fR>J|+in<^ai$S-Jg&L7%_YDN35t$&QvhJ*o#sPaeI|-lu*1Lk&$HrLojQL_f3d zf=ZSqL2su%g;T|EDb95mWd#ZE^k5`5n)uI^OV^r2H}w$kl?8M%aNVc*_=P%vq-6kO zzY&~zhpGK_uR5H5CdNtsRCt0T2g(JWSy&f+paFFQiIH!0O!WGTt3NE;K#gduciC`TOv^IXFun<0|4py3 zL6m*}4Nw~MFfO4XQk4x_;G$#F;n!pHp7^RXqyEQ+wJh7fJrbXlc*bcp2Gps9?PDj` zGZ`741&M!jQbHS$(@&~MW~1VoKXTEcyMaq;` zJ@|P|2{fAvoHUo13``Cjo3X41Lw#@WFwjQ1tCjKTB;FnaR5S@EUahq%0*f>Uzcyyr znoj4~pP9w1XQ4I^hk*Dv9gAScp8|-dF^YkfGOhRH{r-UeXu8IsK-d#RQh#AxZ@r}` z&Dr^_<3VVEC7}z!aIEv{SyBV5>}_wu{18j&Oq;{knW(LIJT+dyF7oD@e!4lqQ5_Fr{p(jOfHeK+Jbx36X+C>ak6l!DWD$^?l=!W#9w9KA@>V-VYaO0ii z#e_(e3GsJ{@F*u`A2{#o!S?!~|1gZT>DY|3TJv){F5=i`vQef#}9vnms*W@K=2UPU7*LvE#(p zE4stGSDxdMl4sjJ^l6k`6|bjyiS(+&L07ZwJzZoM-$tm5qo~qdoYTob))wCb$%Bww z^ccz78VLm-5liNp+9kpWJ>1Q@GrsO-0I3#52EZ@)iUKGP+a;f`z}gsXt2F}ZhlEEC zXyp)9@K|S-kt4|{b`0k<+x_PDm--4*;dSrpMlX&D;MX*@l*t>P1<+=L&6!7p?*rXh z5Me4<&og-<3(YJsOsAu!9*;T<;p@LSu|~}B;h}=Glxu>hWNYfBX4XZz))_xgmKN-A z(-WTz_6FTH*9C8$iDyLBa{MA&vgx0Ant|@M3Ss9#hX~+-h27dK7f?-*aZkur7;;B@ z{Lb=G!0j_%X@jd`BreuvolL#go*^5Q%OZ@zLfTF*4eT(;4&y>{yQ{HlH*Hb~;SK(?q>Ak(%a6X0LhqQY;^eDz)&ri6pn)~ctZjA` ze~YgY%)t9bbDzkLUv}qU%y~k)T-)OY0-)ogASsctP4i_&9rTV|rOjFq;si5UpB5{+pR8YrS{9;mDC z5g{&_T!~jWYq}H)f9CzH;=gy}{0OMh=-yhDwvls5stW#!ZB$N&ZwMBP7L@HPesyUu z0~}>QDY}FZ(|zZulZUNe^_eO({5y>}59gyX;B>>XpiQbWdpHTI$GN+}QkQ8Hn8`o* z!j@Y64pE(;X%ddS<-%9ydExPF`g=L~j!*t%GELwO?A`W{0Ye+&6(gnBCO_~rKct;9 zup_>Y`kdzyNBN5!hrq5&^8QwlYy9)I$6zQ?aC>8ab=8R54QO z%~4SK5t(&s#+#sPWSH>^I8pBg9zbt`bPa$PflprKju?o`zCnbXKZtAH3dhaXNfre0bk8(&s_H z)SnoJPGHTHLG%7cmys^Xe4AoR%3wQ$JjCz94~Sv81`wiCpK%Hyaf*V&~B3E!^r^obfqdq#56(0-3*r%!*(J3jtl~sHQ4SxFHeivR;67_U7C0(Wj_FwB zbaWi^n`AX$k6M@DY`jA2r0oi5iNPO#dH1!$!^Gv`OmSrlS{a%EG?PGa`lLKX+gmMU zVGKaj--$7cQNN|;4cI|8!6ewlhe=OH*gBTKwI+LB`yV(A%|hDV@914j^vq#R(y>F- zAZlif>={=Z;@Ef;ss{*+h1POis(r)ulxuCRzy^h0>B|F7Ennt!B^?^(MUvD8xPV$n1kuv%oec zgMEQ2??6ow zn95S^MA*&m-_yBnxO;P8sE*C$EjN9a2e0GN zmf_feQ&0+J0&wH$C=KvHOlh7K%DR;--l=0ORI_rBveq*|56_)Zw8$rad3^#z$wsdK zNrEXY2N6C{m1OK7gSmF?CM7Uy_m)WKNBij!m2~f_vq~zoDtf~bz zB+VE1w424A@%ZHCcF#qwH?vU$!}*GY8S(tvo3dJs8t1c!Wz~&62SmubpCT8C5qrS8 z1Gu6nN^9fy;+xtEoeLixoh} z065|$y|e*_W0etZ6K$|bqasDkqeBnZ*r{mpmN3j`8suAre7fEa%2nMUe5^~5vNCFH z;NKR)`>W^~_cfWB8TTE9sA+sHA@`|smdihrVF=DA!QL{FYX#Cfj9ulH>2*Ku=Z5R| zfS!&i!-%pxOO*ow+92w0=q7T*kOQ?b!|ZUA8Z0mj{{t(fJe}f9g#`|KG5C{oh6Nus z9pzqc@7uf8{{3*7IdLaVoOvLEbx{J0>uj_PJ`F?J|D)O#>=kcDbHwlin28fX+RJ>v z=#q`4Jzn$*?OUb2*zAJLr4S!FNDQYpj>4+j{FT8P3uH5aa`PXNX->BQNwBNe#VMz8 z=}=nE1zt$G05UyDqw91S6l>T8X9sL_x&aB!llnt(LVq3*E?I}bcUme0ChAbvyG`6l z1+C}(*~c@;^Hwypx!@RwgziO8Jeh0P19*a;627co-2oR-cxo{ZCN?&byMsIsVq;}M@B`+e$)GV2)(T_(m(#7}d?+bwm7V}^blNxNZxvo0h3ozLut%Ow@V`1P3psnl(9!3~U zkJhtwquEbN`4qNw97PDbJozM0@i%C@`v~3n+fBe(5BnU_hUasHcJLvM16Tu-R{0>Ek>JY#=GO8-f?z9u@#Wg`Z zPr->R%64Q~7Wlf;v&(0IIeVZhX@E=$Q03|x1xlX}T%NOGG(jC(+s0*jUJ0X0HSU6j zTFS(ovl{*ANQ0>7tLC4d>rR_f`yj=M=gON)<(*y4NFfvL(WaX1AxxS+`nB{Ey1>U{ z&EWTbEq)aiv-uoU-3KWIw~PBCJg9EfDZ`=;P`BV1Ct)-3Q z;5ek^Mi?b>F$nI_{kh?|Flg_nG3@UM_$Nk{jacp=u!5b=(K!oZS`=?~ zYK4!x?c!2{82JE7T@N>hfG5KrgZicX(4W5B#}Rj>_OIg$r2Bo|iOKSe2L2Ay5wHc{ z#C$m>Mv{EdnEy6Wx=N@iXG{guL!ZS_G&L_tmLV@ch}R{(4l(A^g@N1Ed~mRZ(i;mc z7f>>U@5VvI;0cZY7{P?H4%O48k~zhtJSQ0GKh6$a-9ogTg1@5P>fm^oOS;WOP$ zOY@BI#uBOPM{l&;K2O|9K_5BjJ!^@=&~LtIF>Fo?6En-hx`UCye>7Z0aIl%GXEVWL znKh62>=(N=siThGEMTHi@IY60l*v15 zD_l|&zhxDgwM#wiqNU!umtbJgRpLg!5q4)fCSj1BcL@o4p*mcX6ebu8|hb$w#uBxJ*Yc1N1?~^PjnTby_`!p~N`=FpHu8E2P zKqG}FBUgkO6V-3>;fMXLW^Ae;8`+u9LB~bubE?IVO9tIMtqg)v@$yC;=T^EGH!7kk zr?Sw+b3~n}Jx^8-hDj{ut8UCh>vh!`)lj2f*VLo5=NEx!bb0jWCzO+Y zSr+cx#T^X{$e?qLX;8pr_P?w;+37Mv*S;8;4xZ=LL$!3_xi&DJ6s{;2t!50=M=c=5 zQ!t>|7mWRq~t_tbw%%oqnHeOTvb*1cWh`b+m5rwwN5a+2rByHfcc3vH!-{hKe zt0F;EeJZE1c_1AHmE==!wm&2)_54-b*vJSN^{Eeifc8@{$tkzU2l$Wj`?wa@H@HT- zy`tsA1G{(>Nt3kJ!>^(Z^7B6-$LKtPyTx=F_TM=xv=39zQn!|m4K~X#z7326SDw_% zG^jxmGz8jlBzxPo*JBVPeK23CPKU!v( zsC5ogMs&wEI*arO^kt_7>6_`~AR%;L^4%@c&Yabk|Hc_uP`=g~?35qua6FKz1|nwO z`$dQ?U5aNAl14H@gKpUm5HuUpp~p7E)F_*gvLe=pi9pGuy#~i|6`vH#`CIq5sL6iK zi`Qz~N}KEpsbFQ)lA|u&Vg`HBD@R-Dlo=EOD$geBt08X!y82*#f8rD&L9BJEyhO!i zucdk_1)U`Z&=z<2$&G^&HQBzE#TLD!v-3HL%wSw$)l3%WQ)9CIf$BF40)XyhyZX=j zCx4djc6Hfy4L49Pic8TDY~``?iQpmnY0F)Ov}U%MnMaV?MBZ%xASuqD6LUjq85&f) zb8`D{z65d8g!E+%HZbb)O?etL))`QzMXe|0+)_K10Ufx|?h~oW^8ZSjcRixt+%leZ z)ElTB!_Jxe=u*}wyrfRjElzV%acoe}1H`tKFks(A5hL+(t$+P%zOYQN08k_;<@(4E z>EzmRp0Jiwyk?ejkxnFnYW$QkW9BiW#h{BHM0+^e3k1b^$4m{^*C0Rv%Esq|uP8&4 znt89?biOAHI<{W&`FR3|nun!E%Zh>ntCTlzvjVFXI$#YzY%V$gc-9}yuroq0MY(ao z5up3rPgon-5w8HsH&)017{8`&$baE@#^{sm0XM_?IkROYVMdrrHVEM-(xHBjd=C8{ znh3NPUX>!@OKF}l&4+JH5-+dklI}CtgMWV72U}sJ`6RP(s_h1+7J<2hZ$#umb(J}f z4DrR+`jgXKg!V;BSx(opHi)~nmT#(UWCP>Qb+Lw<5NT@N zL>)V+`0J@XOBC*0qihfGjh-`VuxhJ{!e$`ksIXU>xBX5J)JO(-dG#Pkay-gUMpI9EmSzxj zto@4iH`V4DHxD&dvH}ZKgozaL&C+Pvhx^AKaDI#W#b&kWU7>x$OB$&}+$;xuJPP9G z;G#S!xPLhCEgpR4?yqTsqOAYmeptrq|6bHZjkYOWdAlMp|qdc$cDZ8GdkW;vS;`~xdMKwr$zDlW? zW&xUNw8>j@U@P+i@OTtIu`Fi1Rbwv%2yX0W<;SU26QsJ2D_!~k%}=PCGMQjwExuXD zhfFOsKyDg6rbixtFRQ1X?Ft#-g}!=yTlkR2dV|b%zH~|F7X41Wz?DT=x)VaD*XAeZ z&Ru+-(-C2?Rojs>V%4HFtBdAp^!}zSCIhXp>2q`Pjp!xgD?V8jG zC<*?N-|@cjCL{o;9lOmNn|!v($8-GOs5;!O~3vL`0Tt$5_{Y{mBo*dG`@yz0ePFQ9BXW%yiz zBlMcXAagUuU4-&K2!|^O_z|v9U_1TTO_XCjB!WT3!HWx-1zoS?#7^}(ZUnCkuccWJ zaauA-F}1oZT2#S*?<{EIYjw4VbD0?Q_&WaK*q4j**ib6^9k28V??bY;&>siDkLag6 z_i`JujRK@!k&>KPoAZVGrMoy>b-p?S9qxbsm_KI$FBIkH$qB_%2W$W*`20671wP`g z-WhKY4NhN7goR>>F)R^vnyRo2j6C%{(!BA}U5PLHOr`v~PNAXqwm6ie(aS}_Zmg>% zHKt=rDVzZ8H%oK;6k`mg`OUCB2<`NpQ&9>CP|ZK<%3|GkKdh$MmHCEOALK6M&&aj2 zB6`uuz7>Rp8gpSkva^PoC3mx9-QVmcxierzm7c*1HbQQk`L(t({qYrug2SG|z>f%Y z@A$uhy4=BM{&$J;r=*j7z3oVy${I!`G(OdH>2o8ntAvjQP-9BBio^#`!%pZeq0!{u zS*QzChtK7jNqp9jZF-p~@pM70)uGAj(+SvTb~1E0Eu^qBm4WM=jUtRU@>*&U8fE~q5`ep^)%*Hjgj02Ts znc~Y^*CDLu7X|+KUv;WD1~n`m<&K3g0lFcdvM1yKZ!Lcr3tnG9IQV8C)==e{@GaQh zLfCELF$bFSkLlW>Tf7LA>=*Z*;QsZBBO*O&;8SkP#$uTJkki&=&zqYrZ^3kvdpLqB z9DpZBs&Rd7%wpS~AR$k#fYgM=<8whO{0`CIQ5_%o0n6rM~n5lr|{4ft1z}*NEx2Um9ugGw)f@ ze0~4X_~T@SOmmP3@1B}jPdH_SN5{q2yNMFrEpNvzXaP9NchuWqHDtmQrJ^#?Zikk; z26Hlx=4irkQTo++F84$n-AmshGpvKr4LsdX!8Fqv=3*Inp;pjX-@}d{z>T_|bNC4ht$qjXf{)`4@;5f64ICN+9||+?cU!Av;Kku1h7=&yw>j58@R{A*{hQ+ z!RdxB|LK8bl`Bg28lP-@a>mVwx;;)@tpyN{&DFVP2_6%bf!ioO%GXSisE?{_y7~lJ zIB2P;gIrADfzKc|c;^|sIwg3$vhi<#*5De-SjD(+$m6koYhzeSR46zBI;&(8zxT+} z^2Ml+E}$lS!-RQmK$E2AGT7-JH}yozTMY)D4o!Y6V*+%7m}&-s=KMVK4@X6m0vTiiPQW*K>3UC-J$YC0C>rn`ROVOPE){T~L+C+`s_( zwtYKU$C`Wd3n4*KMbL8hN=OB{A}hriS$l6wBz}uUKx1C8>wMO?w~1q-Kfhx!B$Lf? z;cT<5jZ^F4>APKHSi<0rvqhzxz0KDlC;4XXm!t=A^|I(!1W=ljtc4SCI)X2aUnf6% zbt4dXI>m-hvD#51*h`mjyJ<{q(TkjEx1%y+4MUdVyViYpap5y_6Q{Q6>Z_HZubTO3bUp*~4&Z^BV z$S>uB4}i)t>PMiI0hyix2PLS8lbaXkp8;1luP8ZMl+G8SHWWUpp%2d~&=f}-S%lZF zu@^ccZd<)8qFgyMok~~m$TC-et!0B5%qeT4o`0u^Mwky8qPp-Hq7~gSezOZ7%Vx1{ zj3{HMY;sXml*;W-C+nu%+-@tU0_K)>)LI7wuj0K}k`~daXrT7=PIsaG9LKEinRfV; z;Lb1VCsS)h=F`LII(5Z>n8BTP9mP&PBPbNPmG(ihdiXu6-h(mOt>U00UkF8wL`OE4 zEx-E8NYYiOKP9N8GgrU~{W)tlcXGsu?Hdwx*7pddIf0<`6W!vmtskr00e)QFRe-hl zP^HiSI zq@A84&klonUITEFnc^X)Q=|Zag-59z)kP++1W-+S{c-10_}xjjMH*1PNbGU7pi3EZ z^`OOD5D}{i{Sj=t0Nbndl`|jDqW?LKo#H-#I^CnRmt})IwE8Q!Be3u1idIf;=AT^Q z1s|Eouv%2h#W|ahq1*H)-YAmP^sGxitLL35_H}tXBfSv0%ulQ}D9+c0PAG?8hFzneb0`Q|itKhv!C`@z zVXC}uqSM?IM4ffX&4b%@A(MAz`!*N<`UHF;eq%FXGOQhHj64cF(6_)h$axkE3^k@LOD^2=)mL zMvj40HE_jra}q=itBcj&4jQaxsAP;)xIA2_@2FqI`uAHfU?7Y`Ay7+zT32|;cm&Qz zPeA96lJtk(0?uq#Za{0HmZZ~n@3l)KY-gF0C~6!!nHC9c0B%}EeGX1@P4}nO580Ja z>+FNZVL7=dmV4fNQ}Co=Lh{35_MXm!{=!{1S^>xc9_sA17lb98jrq?6cQiXRUSi*|qMQ zevWO9-7|9C@81-xA!}+(pX@@Z;lq^f1d(jO=AH{(w11<`oZPGeRd00J;;q<8bG_bW z*~GzsX>J*7pJRRvAA>cQ76_$0%Q|27UN@sm511R?P+PwvK>Of!FK$TUgnV~v-j znGgSow{Efv;-z&m-i<&l3t@2y$}-WFf#GwbDr-{qq|fWC^= zpa~Y^lL)@e7pJIm^LMKj@uo7$#yx9#A!Id=1BQ+Okq?Z*6qPE9R90W@*Zc)zXpful zf-VfyCFy`_Fz6Kf@U+@g3DriCRJVw8znoLVr!*I?s~VEw<)FI*%Iugx?Bd5($;FU& zC21ysIH4%Pe*ysJfIT9k1}z#-MxD7is8jNh{gx}HD$0hAZ&Ng`75z4YiWn&7LmJ%;Kn3c7k7=p* z1nZq+gow5yv`sE&gj-SWjkK~&^N2>ASDFS>Rc_Qbw^{VN<_%AV8;@8Hw4wN}P*)RJ za<=iiR!REYURzB?pOwJ%yJADVrCuH`!^1a!o#u7@VT9-i+`=mPjegO`V(D{3zEqy4 z2KVH2m))}ApEC^=o4#?|(kdIo^Lx^Fq+=>j|GVIK#+&8YJ2@OywuD?7caIF12{IO0T_=z=r>7jS8 zSo#6!ChqKuW*6OL{IvjOa&JaK zJ)@Uk-ox2H^rLT_Xi-bcL?@@Q|0e!|X^wVm_@!?P++a4x4We|ZzN#2hPj*q^{{`{I zhXW4);Vb(qGZST{|L67zO0ZdoANb4Tbtu`r4)a!l_btwu%INh*y*irq)2q*FnkB{% z)OtrAM(s_rXQ29g!GwOtT2HLpRJXY!`w1n}={ozL(0^X#wCt-jE|P`$H3zYXindF# z?ux_wqC1pol5T$NG0?*Ie)wfxF0^?@Wq4;kc5d@)BPRz(f4~t#9zW^L$G2!EL*#D z=Hmubew}*1>ah<#YV+)KoaQ@5l`>#7*-kS$fYcSA8);-2J9+`+i5qg4M%pVRLn z*N=5Bgny0*3O^@n1CuKk3m?rb5eu@Jmf~ikEfGH_KyPA>jN&70t3uivWRbLA1BNcy zP*XFTW&vR$w92`QoLmx%_V^O5l8SeW&+h`5rJ4=f&R#_0PJ~u;`C5jwl|!FNgfGeC z0C^!N^(4+H=J-Ua8%YNfzhf8QPBzqH3ANvH}D@Q%Xs(zD#TtY{##&B+!@5-pLD zH*@&}awFjb*b?|8+UPQ{W`lR~Pu{v#7M{|F64%2~T447qI0Epac#i|#!y;oy-36x7 zB?CC`)A=~tyfZfIWA0z6P@(dzX--w*(sYqtU-7#gI8BkHKR*G6MgInGdF94$=vub; z;nRML&t=cV&nzWUEhW%5o68KZbIcp0GbZQqAwU+VQQtGGz2A-Bomc%fn_L!J?S&m0 zxC5Ic7PiKOj-R>9t5bHIpm;|K=}f2DK~2@g{HYA8S}#q`;ySJS_$%$tQi#>kzmnSnEk|qiWHQ-IRa`s*2aAVxs zU@f7UnDt!JB?IK;*2#^;wf>>Jo2eoSIn7Lm@G0r_I1cRdbu$)Vc|GGeHnn=qKv@rf z?q6FW@~L}mx3!m$<{3)$t8P}9QeiJ^Q$=6@%H5#28cj}_A=YNsjRq+S3C#|irR$R& zgQe>PPtwsQ_0)isKe=0cW!((i{a9u6;k%rtdByT&(O}u;Uz!`5>U5}0z*0ua0L!pp zPtio8Mjlp$0Xxe7BC?agxbrL#XsSS?|87b4R<_S|6tE6zz)!sB^}4p(I`#K$&X4>f zT&bqk532jT9upAfy&68-%lCdO_*0y5M<_$UrBTayujt<%uH&4mUOYtB!gOe*BNXs@ zlD_=|*&T^nbo4!bz_$#Rh>FP47OxjeTw|`Y|M-LoU9tpZp9}wlvfHJ0OvSbswchvs zdq1oOUXU}#B6Id`>WocNp(XM5n-o2LRSUzlJQb|JX?KR=Z2po{z`cb zr!Jgj7tLMkhV;n?TrarBwIXT=Q^K&wj`G8K~Z$%NBh*{WYr&4bfZ@b##8ZQ zIQywbNX+n_{iV-UK47Hv$k=@DrLEYF@k&J>qPswLIIQnd=D3L|F8t`@N*euorlNm) zvO+bL?V}T_h-KWx%pYic?Mw8?@4jw|hhgK8@3JuICf`Mg>K@v5f8=j9SZ&4i1LTYgYgMkm1@tl8G1$7WKSzFu#jmdj_>o^1S=AJ8TV!=*O9 zK6jI{zPU5DmP#mEKnO<#;j$q8-V6Isce*z<-+Y#cH;&<c)OTYHDw__Eo zxAJhblIxDM4MTtT#oop4h5fTN(!)!F*`TMz_&i`~V9yskmOm_md zc!f7`u_QEf=%-IPqK)V*26%z~r{#-PM6!~vpc&_#D{L1v1MN#&@5g|DbW8zPG0}?* zbO*iPw^nd#60n!3SJ$TH1g`ryltKma8WyGWXMZivfh_eG?M(G8q790UtQ!LOj61p+ zd`!9hCG-u-0`<8eK&g`ssH3UEO`8w7Bvwy;exu{{rNM@{n}1+D1EQpCc%$LlbsEvQ zjusALxT_ob>-|zKP)q&htdA;ENe}q2RC52Omek;vI z536)meh(XxfwjtgNkGz+!X&RBx*hzcu9vuc>L=M)PDUXB%?Pxx_3>56U&d<`E+9l- z*G*)xV&Gsm%uS!@3^k(Ht%y>*j17Zo_=sJjeri16o-j1~z<#RrJisI}MM}s{6 zn!H6q2-N@~*gFOKZcHw*hS}$*HEhqo?!PvDhxlcE*fPAKoPEsz)B1T>;d|wTgK^HtUbr6+x931IK{aot1pB>XRn73+qSucyu*OpeYGZ(xHK@sMtsQw!ja>E?a@!_NzjM12qJ(+tphYiQxQ zXjWuCiC9#(0Ai0b8@|V8i1$@WQamLf_|CA?6PT`tQ7IY_!g4w_*5IJBW4Rmui;DJ@-UM;KJsrT-MHk1_#eq_p+C(a!-EFHz<+wK2$><}rofBwrf z{om4-ybAWyyS-h=rh>1X$vkw5Pth#(w!Qa{MCBXS!MO$uDw6$8DocPqxattD8)3{E z6zWszkl)yRK6nN&J)S3`im?twy*TajI~!qYln;doXk{?p1TwGNHm$EwToG(OUF3gS z(%2;@x~b9&2tJ`q_oTR7BvH?Zd%UCv@t436QdY3>jr@{A9*#39FxI zoa5s8Uis&^aQ|bJN}*%KafA1bcne^wC1FkU*JJUB1OALeJ))Ht$zM62i$#=n-SAh> zjnn{h5CP%`c6`$dY^i<(k*N~~OFTn4(u?@%Sh|w8Mar(_+BVu=%+JKkiu(4SP6ae# zdXI!2L6E}EV@dq}XQdM2+CrNZ2?9PyFyF&r@r(mn!flFf%O|-+mVK7B@xAN+;Bjz~L6od2MtYw!GF#c5cgbt-$k21v`3o3%H#( z{LHj+g${R-3}Dfox6OYb$t(|qz;?%SgTOch_oJ_OU&pqZ;v5ky7D5+`&(J~3EI~Ly zs37t0S*<{vtDW*%oTKN51SWKVTvriqL|`C?_uFe$8tBuDw=ZVl**fL2(=V}&Rcmq6 z$F3@xmCtK3q2iRDG{keiKQDy}xv1uq&3rktvY@(T9Xk;;)Yxxp|62%k5b~Vd#6Rf% z@kvOa@=80vc9ob)qlUFm=pBr1K9xA@0oG|!uO^>R87Rdp`;k{LRg601t*MiquC<<= zQ__$TyOtU!Ik=#5UhpbSBf~AnRx_7V_4{CHPUeQ)LQSD1tI~~~BmtRbEvKU$S9gM+ zasPP8+K1suWHqpY6R~$~x9c=h9w%P0p*uNgRC8B^6#J+P?#rs~mRYs8YbW3~C@phH zAl2Ob5g*y3^bOa^V3(0bXVO(dRaJKhxQieNABk@?h7e1HIFzp6mP0ggd9;#s1f4hq zIZrb8s1c)pi(h9q!J<92L&Hi#Wv0S$K(l(*6`d!Kpu)W=IF7!)H5{k7bop~Y8 z(o!tyw3^AuFe)sJgNeq_ch#E;MDtE6*+v1yS`qLDj;I)apc0t#MnYFUi-8Wg?(upB zCbU9XXVr$Y$Hu%)DGX+U{pDe$DH{Qn`DDALuwOLL-|t39cjBDp)^cffyzP)W*(rdE zEFM?lnJ>`XEPjeW24%&41G*X4G+6nroR-yiXL~~rjKLMoL7n@nIAS`~$AZeVhLsX# zeBDtGxKrGA+4sfftpmN;jM}f;%qt$&80tC{-Rm8(PaCm6;oz!1Q`x@F5}G)rke`JO zXt4-U50B^NPX6{3Mrau;6SD(7r}=w-%M-BJZ@RFJ#!TAV*rdXoUbsUQ05_5ZCq_hk zgcRwcm2jA){Gv_KGx1rrZM*)=hZE0-vlaHK&K-g!fK(XF3HM;7DGY?Hv@G%z*1xxx zYZ{$rc9IE&6>CxSs_qX=RA%K^3wrjCB_ycV`a916Eph-QMWD4*E+WYq;RO(kHw$+ej2-CS5&u!jN*!DQNh$W4UI$vZ+>y~GIC@X18+-K1SHN%g$<@o zE)J^ysiRd+yX&}gvC3)SU3ch*HH!KR30RZrh?VZP8&nd#S2)X_BHvcJaX?=xxZA+9 z_$KTL*jwL=dsN{GSPl-_+KZ3*GD_pv)FTJAVp6sLtfb(gicM**^ff9~ z7oW(j++VpD?)4SS=vZ*ZAYDltsExaKQnH>-kHp)YUKE>jym-o6&iYY!*Fgr?PK=Gx z*(&)OSNzJ-tDu3HKWx^1tJL{XcxINMV)u+)f#6KJxi%=7dFms-2T+72)}W-o+EHnD zrqYi~3Y`mT!3D7Zk<^~H{O(HV>Vu`_G6%=uok@#>RPT#gf!Z`bWBH>83PM?0OS_nPcNsH06d; zA93PF$@nq1k3{Uz=*mqFeK1bVU8zEGP=%Ec;SAetWOJze`)9TW6GU=y9qviv#eoLU|ad(o`}na|7G1Q^$>OW zX;nQw`@=%ZAKx53HlIdI=Awo?<{ZV4(>DIJf$+T9a{p`F5kJ=8$Vco;a$iO1?_2PQ z;csjLL>9fXbDjFmjrMi^6u;V&&Mly9cYRId^LqBKmj^rRJ$vhqhkdP(p%)jQ9B@?Y zNQI41eEQwbc>#Oa$+|pM*%q~d${|@*k`V+n!#oMCHx7?dg$T=)T%MK(x1fG}4O|J_ zYF3gdlzw+^ozxIMUpV2<<~&8TkQC+4Wb6KHj;&xqD3o>tc}l9I_qydUNKIAn-SE{i z`x&c8#;4*=`UejCM0IA}J$m&-2h8Sg(~*`z>LrKAHko$Y&s6R+GIRc}dF0%PQ)KHX zul70YYQ0IsqLp!{slD~$P`J-t69PLW6>f@<)Q=U)r0fmtIqarT-VQlTA+&4R_Y#bS zb3t9+b$pKSN$*|Z7okp}F12FRIGq`>3{oHBV&OkNo_e{eQ%q)F;<9QF4z8E;yXw-o zRj-~#iDx+0O7`0i_J3<;k;-93s$Rz!_peL9y zX1_Pbm8MhgB_%^-Y!yzz<6imj@+r{EjNpv_%Yy-I78LU>fg=H z`T+)K0x17rR|;2F+2&^Yi2kDj?UWg$Yl{vADAy4iH~rudMJd4rDad;&Xe65gSeZHvKzKdR%{yEcpn^z@n`>H&-zH)-|vvp=R7bjg2J)g`XKOUNt=e z^Lr%G5T00CoFepq#*-8>sZmfvO4!Zln6p3bW|UkFE?}`6yOn__oaT;$2OrTkPw+3$ z`cg+;I?cF_S1(d@RHqBtZx%&48MbTuye=JlQ(x_5_$#c)AUuyGn|-Xqpen3JX)RO8 zUc^rb=0oKiF_|7e<;lrE94jMb0yqccP;ctj2v>j8EVT4fZQ?7~bTEKub)Hn2-%M7! z&6bl&%8B1`0Ca_d2FBBsGy|C3QY_kJ3BP_h}E49fsz0bMI%s>f?9vl`;BOaI1 zfwGB1W66;k?q@c)_Vupu2Ok)&I(~-;l*TA))8zgLQ3NZpaaHfxq>N}#%;l-J8`-DD z6c?gCwKr%D=YUU+x#*Yl8MjoGML&Zn-+JBCVV}Vshz!zeE&CO^eOkHtA2X_t3xTJV zR9dmyZ-*v(1gkDTDy(N$3mH+E zPY%|PQRLA&QaNP*uIs9{X63fk$KT7Xif6ugTCp)SQ?uK+J z-aqoJtt=I%nffvfKhw^et$HJnekAIuG3xr~p}WgZXyPw%G7weM-E%6k+!K=U8X}>Z zDu)YK1jI!pcI>Fj=sRrWi1QrVn9hJ1IYp0#8#zNB;Ora-VE!&d0eVj)#z2L?z9%ZXUl+X5=5Bw;9E2SF6gEEUBs`bRy7#c&yJ11;ocMMjIHj6XOe4U@jk|9k4vG z?2r+;jV9ugz)z6zo17JkQ}KVtti8Yh^4Rpd)p$k59l?D8rj<$z+e$RxBgSSOqf|#x{f2ES+Y1Kcv@f zDAMrScX%>-PbFf9^qVqkbeWWysC}P!e`-ZNKO)%A8Bvc0&H5!nIo3YGWLlZBqWSCF zS*ckSHM*8bP8GGp!fi-ha;xg@ji!1PoEeuX|Gh0LqBS#4)vwd8bQqUxTU66wpDOYf z!}c<5v{_%BP^*}JKOPK_TcHw$W*D=7WY3{4H0;}To)lU;^$LB6rTIcQty;Gs>|Ylp z6&i$md(&W*kNLCm^EuXb!-bSyyA|IXg8Cj%OrxnFb*a--*G3ab&0E)i#Hnf5h9LEq z@CKfi8^y(E%JQBr1Uc$l_`Yw&twRJ=U=8t+B>cAnJ}}iweoNl02f(Z7dZ;U}JzLty zg4MnGxR6!XA`o8GN=hRp4v+@qwQqVP-TWP(7%qU{vE;lh0atOl&Q9`L?kGwS@DDBV ztf;BVsa37M`v@ae82<2~wr$S@yjMEGJ@N%+y{>b=V?3TA_{#~dGeUVtk|&h766ov8 zE1^2!d8spP@W5j?zh2xkfZcbwqjniPtsKZ|0(!F?+iSwK%-=E-W_hEy^=trJRUDgy zELNXUPevy+jkbKY<|{}AlOqI)&|s^z}nYt*Zm!NQgcglr42W2*pxY#=^biR!#xyGdWiPBN zlIJI|(yoPs$h^K9w$IQT2en}<7%kw|B!TT8;Hf}-V!0bSze@gQ?9~jgXt}d=@Bu%2 zIWxyTI%kW9d4ztv#VULam9mbGZJbddx>3;7c1tTH+$(xIqxQ1vgH4t8c9?ZN^TRJr zNH-)i`6^SQv3nq0(WfuymIv6EIP^Knbxc%ZDfwVpseZUPU8sgvb@FXVm$>ONz29S> zJ6G??69&3zH}*Z>(tUqty<9u??6;{aC)5NtPxn&%@Wp;egmdU_uf2#T7bmoF|0uN9 z4(+0R#=<^kd^dm{GMM6)X#c^G{%EuuN*`_y0Qk-%31$7Gh=}y>O6jh|i zGi<+lvGd<4G3pP5ogLBJ#9im6{C)C{_iN5-R8@5C@#+CIIl#^hKBlCFmh*`2I@P=o zYF*gkL=hilws;dkgZsB(@0T33cRjIm=#eGJs%;eJ97pOHjks#QYTjCi#!NIU-bB?( zUBaOLdsz=`g2Ga#xuJBv$4D&s=*AO*D+IdPFOd*&n9*=I5EMhheu+s3 z;*b$7#xBz7@6hdC>9UDq6H$vbHaf}DPz=Dg#0f!B1zA=7bJ%mY%F4j9K%-k?8fO`Km3&+QqJXoP z^Ti&+{=V5ZXEc8cSQ} zj6kPrx&?2}aX~{>;ZgI|vF*8m>fkH_{;y~daRxR8Tdc!^rJ18^>82bJhdD?j6V zM`@-nY6MC-7JZP}0KOuo)7djHRoFHiEkHnAPmGth;tuHv|Ir$j6@SBs*I!^p?n++G zHQgovU+c0A3X)fO!8w16i4@yLO58KD6H)7r)ZS0EZUp5XMWsx%u7|~p(y&Y*2|cyH z#5?;j>4#wx88;CVmC|-Kig|ldYVz_A{d4K5dUCnHFNeOr$ zq~h|kcKzaE?fB(lKdfTefpc zk?Lpu2SS5k)?|Wpm$OWLuEr1_>yzyYMzKy$WuXdMZn0x{>nJ)XB?n%gq6;QGKWMs2 z0e~0$yhVM!94~+1_i%N+$#=eV#30A^Psey4(z{G!Nz)L1fN^@Y;E1G{`ZZ+x?eO^h z@;AmHoUupzAy&v#tCn`LH=zX1e3LUpmD3xk*wYgEn&i|0U#zw8reWwHxgcWm{Y1HJ9RH<16Hya7uC2cDX<*VMXD%ipksum$b1|9fJxC2})|dLSrsd z+}B!V{I{I0syiS3$W_X=z;Hg3u+!J(Y3&Q+2&bM`S3Iya`ng<>v0W;sg1oaVte}}Z zU4*~FaEd%Owz6{WZAwYcdbuoj-ZLsMZI$fkH>J7f5J&WqU202f%)M!iKx$pJ;+jvF z_+dccMZa`kz0)ByhGM)gx=wwkYeA-pJ(`0PkhEDSLa;bZsSP@`tTjwsmXx5xo+~tn z-r3w!pERv^mma2oIngQB`)U@_L}(QT1ug$gpa*9Wbj6!}3F3o1k*LNNE{@plURih` zlKxgmz$KXY<;zakEA7eI#rIh{5~IHYZ;&xK<2zdJqIDjZN|r5Jjt?6GE_A|$JEiSw zRhG&+R-3wuP0QIL_o(YO9`u5ZicV{9N|+(7T-4m^VtQX!BMNo>aWEBB@8uRhY2;G+ zLukk@>t^;=J2IEXLvz+xI5L}QDQ*{+MhxQUGm{S^xe^|DuDUrV)|jQ(phDu4oTYKL zd7ly|le?QjP!a80r%fPgUwiP=^OJJky%O7OMUW$tVEJ|VSHi_4Y}!QE$87MB?@6m$s=JKP1r^5 z*Oj_9FOBWP=TF^DVhf>(+)|l^XI!myiaeETryCpOw@dk$VGuuWIkQ=LH3ycC)xK}NWMj$)Vd{S%omEi8y~Sqk$n%zGaER2gXP$epsB}byw9R|B?dp|) zH*70Tcs+Q{5{{wO{p=r)#O@x`IEY+$^2Zjx51@fA+3kLlRgW z3+e5>Fi3olGN*)7LcMuLMLQrCF60tFUn%6h=zpF+DdSbaTjEq89uZu0a4ua`R*GM$ zlE{HoOF81+f{bd{9WsGsmtgXAG2@##TH2A@iY9BN8-a+)DfRyQC=#X;?EFD^C0-GO} zN))++GnSwYYu`KT=eYIK#jE{14{I98Hl4*?%nzr|bheyD!Jdbk#wGQsUYr99bs*2f zko0i(>7xfIR1t(2cp+-C9yBZ}36AWV3{rJ3qo9TwPIzBjcGefc%7&VhOv~nBVqjT_ z=izDnWPLxZbjTQP?RNNw6VDw7Ry<_fXzhCVZ?MRnEDhp+co)3p-avNiE^ecM- z)EM}APT=hJ;MRU_eb-1TIm7>cUMs+PZ(?_zl&0LLQc_r4oMc{DLV{wxws&4NxnXf2 zCpK|$ZognMV|Q`3-tQ#j(qZp#NCQ+52y(l+F0ll&C|fEIu0=Mi8D=#U)#@DTlq?^1 zX;f?Jzes2^1c9R$#oWM7_ErT_ZVKFnI&#h8e3I}wky6RBK*>7L%4S|s5qQ2)L)>HO zm#>3$clu_TkiRY)u;eLt$!}?eL@B^=r(NpGy)~i8#pLEjoCxA8Fj6~9`Y?L9Y-j0` zlY*TOnbGU%={=vfZCzL^^WAEgcp}L>Vieb$`vv1D8JsFuJ2T$a=5bs8$L|=peg-JHR$+UPNw@Q>xB%Sw8|@HjKc2>7IsWL#)Jz)%X*S_!Xo|m@V)xK zAGb*vg~Mmd%F;Z(i8w$9fbqXiVTpKMlCPewEe(CH-xXa=REm3eu;c7knRCQ$V;4#g zEh2kh9!XawdtLJO=V3s`aSi^7ab8q**-0n<#Sv+itKPCyww`S3Nb>+nt{`0B$|_DJXRsdZg6)3 zi-`f!SB7_!>o`m5;JC@c5jDY1Hit;EI0jgD_w<^hXUTBH$e*b&T6B( z8Ufyx#IQGC`(e>jv^VDv#^V>BBTE&X19{29xbp8lB2@LY82_FTO2r%;B=*O1= z2vT2P@2ve9lrHaJ^~I3t=yPpvVT_oD{NTNEu!95)VHsYqsO8W^Ld_7k1!< zO#{yQ+9v0KG}9{Btu^hLPc8~Aq`t!^A`tV~GZv4YrgD^5GFs84c=n9~|niDcz z0zl|d`dF_n*8b-mAKb%m=;vnHhz{VUnTOZ~G_K^1w^OlqiV(+}Q8)el6h_QVN_*YS zO$YEc2}@+7g>Sz*4g%1kb;7DBTy8DGB9D8br@IX=Yi(kTd8mXAiPo0rZe8%M0|~B(Q1TJHG4Th-3Sk_l?5pz`B78JLt9Krjl?I- zMMFHzzPHzYK<9`nNOgzuW4gMnn{J#klW^#w@hVfWZH9OhWcB=nf4C8F+_5Hod{w4& zlGzWWp_4q??~d&+!}ni5A-2WJ@cq}}d;Ne{9^5)?f?8e4S_)h_sQ@Xb;iFf;KqAC( z12-2soaMpUu431nko9iJ%}gS8;7&mm8D?_a=k8QqxsmwT6jDfzxem9b#k@OSgPLTl z>PnidI<`xp#>ucTcVs|9#BC0LsHq=EXBlK~zYBq+dJ4Vke0Y^K*1Im0Qk;nB-PKk} z5S`8S#1X>nI2D*7de@Kce`+e>S8*Ekn&rVb<0v&cXtICc$;>iGi>Va&ZmL!(&iiJi z7V>5Dq#g*R0Ngv$ntCr!oRoEC$opeDTM^FB?>26)>BNTVn*B%5!pj`FPBdC|!3e;y zcx{uwaSc(ze;x9m#)F$zZ(61?OI3Kojr5%u5#v>llZGQ-^JAC5tRJliiNMQM2z+P# zIFemCPK5t@lf;$~aYe#lu6NkC(@`3{IZgK(WVS~qkS`T%} zh^4OgdsnyvFM>NwB{d%+nvV8A9g5;w!-K9OGn%2*Ko%eFQ7er_p1 z!_IyyrpnFt8sq$*$K|e1P|A&ePM}i%5&EBY7p@zko9p!M-+ zX8UswrLS3C))wK^_?RD%!tKO{i^Tup`>=Yl4u%J6ySo?u-3HZzvBaDMf|qL)9|V~=Qs4g9y#Et3#N3d1^cj=M zP~BShf9zJUGURgYI&BN2yLwk<)aWevIrJ(6kU*G0F^^JaJw%N^ND!HaD2I_@xg@>3 zKKqaHM9#d|t~9BgnvT7f#~-f$SD61lR()ubn;URl@c*{<|JLRIqwfC?MJGyfUu1Yl z?!1my%=}&&@gYrUj4Bbr+uDRiZf2O~2j=b^x8Ba6MJww-bj$ig$G3300_I624@afW znwXeZ+H-uB+BM>n74Tn6WWX-nTDk7Yo^1ucVsL*^uEiTU2Y>%+il>aNe&4}3OSsLn z9zp5wT&&pmJ~PzaT_>5bAm2=Cz7CrvC@4dzEhe9jG%{K^PrgXK8VJBtDpA&q*6}Uw zdc{!|{D`zt{aNbccdXeO`n~Mwf!SZsq9o*lu#?902zfGMz2%$Wr6rvYb$OFMfHx zOC$wy{{Ap;!pv>vR`{LoOmcHy8nl*Vg;$`*XN*CI3nWF}7A{Q4Gcw2*jOqJ(u=xu2 zrAggi3{8>%O`*Oc6+lV~X_A~Yk2pH)({ulq(-z|VV+^u8Skbq5iL~Q)@JwAh)13TL zX=8_)nM4qxIlP(4iB^{*p#@r5$2*g@Wa0Bf3z(s}K}(+r3{K9zybRIcP1q(b@xRDRoFO1+wM@yMH1Pr^U&#oc#6Ty99hw0!5>3I+wR&pf@t@ zayU*sZ(Hieoi^(eM&E~CAUzy?I(e{Uwcl#F=Hgp*U&OQ=R3wFuwmfzb&~6%jw#I1b ztB`LNP5SK!kQF{{!6R7b4cV9`Y(%5)@pSK2n8dn2Y+e8D=cSEsa3*xGc8W^(eaOW0 zA8ooazOGTJk?BAuJ^f{s`^Y5e-oc$BZN7j23!@MN#V?@joDF^_@FXw1EU-?b zMBKV~avb82!fnZXlB5W5U?`hd$*RG<&&y$yS6$z(j-oEu`5Dt}V=ynQNSG|IsUWB~ z@lCpMj_;};Ix4++YY5k|hTo*7xGYsaxgJ==!{UTENTXAWjd80~Z{v@m?JECrFw-($Al-SwqTVxCeZApsv) z4~OlXENtfHP<$3tEmhgO)K)>Ul_cDZk3eo!&$@q>n#;)8lF#MDMkare*lunhPx-5p zcG??PJUe%}u%i9Z<)4p&%u)zG6mB^FTyiFt=;XZdiMZx%YY? zSeL4Fumt_SPO@&yuDP?6cG?j}=Ah>|Q9n4zcuo2hNkLcB2tqD=YI{@HDUtHYmH2BrDR%SuBXe_G>Qc$SnVmRRpA{*qpocPDu%O{05) z&b-=ozUPnd(9G9hX_h4Y2!}x%K7$fw-+lW^l@k=FtL9_|Yh_|WgFB{^tjSZT`QMD+ z8cj*>Qc3p;7KW?9cznOfIFTZ-GE4cOI8f>uQ7xB_D~6CDRZ;c4(260BfL*G%B;i^H z+PYX2`Yx}Ad-kRe3;Ve=RTjNbo%T4LZcN^(u-rk?Qy?^-4 z%gZfZsV95dSX(c|m+dy~f)RlMicXKtj;`;UkKBQg z9VcHdryv{ zg&Xr^${cZSyn`AuZKs{g>FfDEnCYDJF?sEsK=RzX6QQ}h$Vll2K&6vU9LXQh5mRQ7 zFTWi?SJ1;e?$0{mcQ%I@kanlVW(*+ix6eE}e!{RB@ov5Z54~TnD%DVAaLeTV{vZuiExj#U(RU zxiQJJDdmeI#z&v3qS=++y!NJD`)%ga?MkN|$3lY%DD>sN@R5vot7#TLrJPSW*BkJo zs1SyYSypu>)s*Vi>fa2c){}Omk{ptYGmp0uuw)Ne(e^C;d@ZW@718q zPdPm%&ssG4&r?71pD}xsNRg~7L197h6&kCdkWh2T2WFS8^w6JqbIy0R<+(H{^ONgB zbGK6*=ZGC!&H&KfBlOZ7iJx=hIp=XQ;u&>Z;`vg)%y;7u{1+jx#qUxtJ7h*QsU4nH zXGc06l{~lh$R3+l8=~(F<}nFXsI#`38_G=la$x^3aIaRASAXg58+rLF??<9C@u#nB z`)e2i)XyAZq>tsg*5~j3rtG79@!1OD&U5nS7x&Wa#)@p*buE7rZlyWjQ5|2rY{oQ) z6SaMh@=RnvF?hE;qoPN(ansT|l(bCDnW@h)k2e;jb?GJ@rV|x-c|R{&UY?fvez86F zUEt*&YnfO4_fK<;t$4w|L)`biVQxWfc=Q>0fs!?>=0}55Z;2DK25&ay{E11X9DZ@J z>z$RY;}_2p(SA@cYrkR$lI$3sUhiUF_*UYpWvLv(fMv%8VLB&hj{>N@c;>uAG!5uv zD*W|*n%bz^b+hk9ZcW2SLrsG5-Zrkv#K5PLr-I1Ngz|qpP+*!v0p-&$Cn3tPI2DWK z0hz8@34O-o&JL2S6bS^|md48uk=*`6gixc(?+x4{qtLcr(4*Gz8e`|c!OE~ceDRs` zc6XgG`cH?IlW3zDF~Y5FXv*__<>?&vtX086D<*gYN5V(4UFD0>pC(a-VA+{{?1iLf zO`3-Q{WGh{SP2pRK!DdlMGovoI55(NV;E`Eb^1F2nWyi#JyoMs_a%<}QwYbV6o>^c z0n${t+ZTRPN^Squ1JPhr;`LFt+$T_f5#{zW8$f$G@p$cWtbBu|uh&NSes(veys38jBVcy+TB1B|mNNGsjeu7TxeCFddGjrD-6*ls@gMd} z-Be#QkcH_Qm;~!iF!I<$qT{~&tbAT->pY8@OFJ$?Izqes{@I+<(U)h*ktkaG_cJ&` zaBHLbgl{7hN#8wPk9+A9mmW0~d?X~|dl|wk>aSM2$~{8kg zb_6~yqaJ1wA%}NHarB#b3mp>)3r%f^V-3Xm?*K#Va#_0c6%}UA5QRjSO z4Skzpukdpv95KiEh)p1+>3QXW%)WNj@4ku`Pc}Ja1F@gZKf0IF`<^$-k()gZ=H%{k>suU z#{5d(JVM0acjY4Dp6faYVd0AwUFhj^ic@@f`+-iA@z1otM#v+5^5Trixa@bKiRGw!q4-p2bS}_S; zvRz*{&D$zRMfT92rHiRWS!xB{*-3o2Uu8#fY$v7AE0NdWhJPlQcE0&R(ZWwK(i&|J zDN_O~UnvqPmc?aIbKVe%6BX_5cCLRb8pSH}?sV9B5And<7fl}(EV_Hw%`U=Wo@bl8 zW4_=3cTLmDqn}YjjmoMP%%BwOcDuA`wS&8JpEQ3KXvVK zYYF7vwc0t<{4rQmcE!0%41h^^(>ObyqoyYM#pEKQr+e7KSDj<~UoRALsgGOSA5wgV z$$s9GV9{bV_dW4KNpbn}knTvIhbYK$pI@~x_9ELy+Uj2{&zOp4=doiUc{6t6t2d)J zGg5BMd9(50(w9P_KG}Ffo!|Fme`^rC$1jW{v#y%wF9tG@c57pe4#xM0+O%aKw(=YjmJej~L zJ{B5rvS{N!hL3~|QKx(1Av$`T*uJHt1xn?WZ@E1V%G|~3=5c=a+@rl98}lvgGfncc z2_y8s?p_9#Vf!`GlW)QqQoV<=@ zgXP>PZz!x9X105>4urW7$hqSjSM#y1z20!le2{XLZ-aim0sMX_{I)l2tT#FxmIuDX z@ad4fHjZO6!aQDa46$k!yR}q?nJ3R;-33@7u&=mGV#A`YaUU}B{ux@ylA7K+f?6y-`6Q_xU>46^xAQm`>#Qe}QwY zOBVq3EbRxS(qMluGfA-(V{idzLcj|Gp)=_BfoV^mg*Ft>;w&OL5q2!v|A7oHXDCsL zj5@q(K18sp8YFvvf-KD_qKr{RF>Pw@@1Tr>|x8Tan>lvohfLeVB?2Ur|31(FQRJSL2|8`Mr zkkXKVfFjX=eDScaMR8QCf<+5Kz`kODm_mpsn#1+vr0B6PgIHn{|DG!f#edLQoj7WdNlzpdj^_mnTgpUNpBK(TDqz%oK5mtzX~& z-Btvq{2eQJi$$v&hP~JJlz0#YTXkIBwO?c&ejZ^rz(GV6rs#%B)c_BeKt~4d{5vhv z(?D3gTPs5n^)EC5E9q(O`Af+Mq?7};ye_pyZoXWmNxx6SOon!XfQstbT&-?ghm6k} zny9KxA@NxH;W%KN)VRVPvI3kG)qoJ)FbLYb|Ni^m`(f_?0ykp-%J&*JMfUwkIeavX zaQ)b`uUSF(YbbQFU(#dh5C{QB zxPT0#B0Tz^tl%e^Y2idSWsLO88DQo9q80ocY~cOO$rRsG^W@@jovC$)YHthwPL2ZI zw5y<=KyK%V0Z_2l<7%cQY|nFwX@_M->&D=x*=lW^Hot+e z&9nLl;!j7OU~KPZUQLeV@*YCg0&#$)b-T9^i{)Hafp9@h9U%o7zm6&MKJQXyw32?J z10REQM{M`z_VzEW26qP$Zd`CJEgKN+HIWbdCMx|ufXGpj`eNT|i&kEetT>mmbT5h& zOF1ixJKq^OT^FmJqNHbX)+bcXR)N9`~>Ix&L_)J|X*OEhT_Wv`Di; zZLR3PyB^7vk;~PPbAN;TtK1I)TQA3ti_|q}+f1wZRFhI4`=<2IV0{?Sb{FvWC22TH zh87vE_OcNw6tdZoQFEoT8;0#sd#>C$5otpF)+W{OiLnh%=jK^9o3XGdx@flUuyH@r z-9(Yzg*TUZ%Ng!}7`Aa;g{Q7>R7vvsnN37-Cx1-R(PT7W>U@#qh@c39O*kF8% zb!M5`BJ++#(gSY$sH1c|Y%i0FC!3@>nq&9=e5XpagbLco#~vQk0Gra6&yE5!j`EZ zR=Ka5cq+N#no7g66?z4fR5}MK1CX&{0W9YJA9VO@tASj-D>T)_)3nz|8DS4>(r3s> z9cf9rOL|z?!^NG2X)^oX=+%Rqen7JuM(ZS7wGwmMtY_6Pm=;@kFJOrMa&dK!S zv>26YazfamQ-r+Ps**b>?6GG=|HQfrbn@&7o}Pq{Zn1aD#DxTp74#13^6()u1UhuT zZc*-AJ>OPZxyqWnRMK5l)wYr6$Z;MAs!t#}{V@dQvT12Lrm^_{*^Fx<2uQA=MHxBo z2RV(}N-;D{q$q|FWPtx=^|Fm03#~U7T->F)**qGHW zP8YkTF=dj!ho|G@EWdwtfkS9SELshj67^ix&gQB*bFpg~s3S^U?V6Pa(rX=RzqQlp z@P%JNwvV%UIik8w!2+MJRI2;7W|U(~a064eIdf%24Ggn@GiH$274Og^ISjjzqg*bR zo0UqlT>e7QdnS%?_o8WI$MtkoC=m1}qU%3HbX|t%dMtRsP^%fWN@b+3Hk+f~%1S(n zPm$o>B;(S$bqMh4u?Ei|a>N8ISZGrI}nq>4JEK1fx`bA#AF-rTNZNVDj7Z>+xj4ebj_Z5tr|U!WZ?ihl4Be~?d0VH(6~g&sD%295QO3{Wz|fbN_YOfbs`uP_f_YB> zn|=!3anrh+S~{}svCyK0d{54nu}DVjFEQg-(*eFx|9wkK*WrUayn#zGZN*SE-_o3w zdp@cL){A);*KgQNt$9R}NGiXmIOq}w)VB_-{22TP(87Jz(f;;eby1N#O0QT~=1P9z zzv;w;Sp9nH4y|e9^K4)lcc-T5D4z0>*$1u3ubC;~MnE_^Z#sdw6Htxp>o#>lR<~@q z5>^)EUSb;_2p4v2-fW_%Q+14JxrTBZ3y#^otA>`Yf6|2CV1+nHXh8X=4Dx2pHy_lp zKKHC8Q)LVSjOQ5)iK(_A=Gc$CFzd)+?;%IdF>Dkq7um6)7-j0AOr$Eb`8J|{0&MkN znHU#$YD}w0Nb=Kq;@^VRIKLlNDs8Df=}-yfXlJQQTC16B1GNTZQbdI3Xye7u+PkN3 zhj`s2SjH-8M`aB|Xf#QtmBS5GTSd7AR3*$F{;jKyFb;fN^fcAd36pEiPvLOt=VpMPK>>XyL2C()8a$ZaU2%+%+B}^(A>q z9ygkoXu~m$LEWWEHKf-1Kwcb}IQcT=rAp=4RJgymR9(7MRcbf;0Jc+J@x!zmqe?4+ z{bfp}hF|sLSX+=iFR$fqFW;xAraw%}Tay;*%eUFb9`w#)^?9>W3U$8Svy~`z4@6nz zf))NDgo>vd@N`_}28j~XTK^AgIU~2n)M$-Bg3vu@m3doWT67E3RZJWM$0LaR-b>$0 z5m*9|uP0ewEE?IKF)myQ?c7GZ*TxRonnFu5qd5m}F+<#NsVrj!KanM-p6QUtY{;=$ z8Q@0an9{|nL-HL$=ju-M z7oy^m6-o}xQazMwoh@|UQjp5sk6yj10bC)~HaE38&;`*{xe74YQ}T(aWR{Uq42VMA zXgt#;I(MS8zA3GaqL`RywaMKY&*fGZ2MYt!EUp&Ml;I|9d+k&wVmjI|OT4GXOa>Ev zJ$1%oIS54UP+vjvRXco&F7+HOw`l5gX9e|pX&w8PET&Cf)GeH0E?>8TuVE8l0<(hU zY~BvDE8w-vTJAIkV1I)wrcoJFtHB&K>sZ00Z}cPS&m~ieM6-U(JF|SSN@|Fgn$23R z$9pFkG##Ef(_d-MOE`s2lkJKpMbwR1fuVsH6$3Dk;w|7s)j*n})gy;w4G0iDH~xx1 z@)7g>CN7uv@Ucd*s?mRsS3S)znb$4iHBT{kkUd`R4A3@aCu3=-5lqk zl%mY$dpH;QdZtxw~UtST9#aEHsw;aDywmU28CjASzf-)DrZ<>W}Po% zlc}v1p0R@M;&`I#yr?4#;cMs9N1$hO6**Wrhqp~dR*3oAfp6-8 z6}%{fd=XP8GPFob(P67zUv!c0o7imXIA;^Zpy}Ly2R!iaKyC#jPDVyzdXiVEsFpfc zo)kVNg2AL#B@%jyfyks)yw)0{=-E^q7;3ngtIF2_?j9hNHP9Xfl955RoR3DbGQgT( zoQY*LqhEZjz0vsXtovleGV&!xg23eD{i0f=$lkj`r|76UrM$qB8eJD?)_v)_(m#R? z25G)q90lARY;C!5yX~%qp$mDW=oarprpDs~<6{hBes)ZmG%|%XTG|VWqcN-<&OB>k zonPUfk}1Vl(R5WspE3eBdV{R~B)~HgI2D&Os^g#3Ekfl;m(i=Z|JCteFLNbUnfjQDr2PMoZ_~YGP<6!1?>E0E=n)bn^5YfLM!CRa%tJiO9IS zMmm0t3`~6Fe zVd3E5(p~xd_NDE405eypoHWm-qC_ByC5Kuw6=b6&l0-a)H(ES{H-OQGr{T@C7@Mge zU5tcT)X-T|DH0iRF(Vc}c|QQpK(-37$EspzK`TIkyxKw4uIvH5v+mO^{ZIUm7*_Bm z*!9Qd`;&rYDY~jDMn-?(;>9g)Yy1HZ$(hJYWIOZd@gh^K?xCs0tj$AUfEwU-Q9Jmt z^w*PUv?y%=^SxKPHmcL*OXZ{GooKk6?{>@OUHuCGv z{dczRd3p|T`~*trPXknIrrw#F*T&&ni-U=to2^^O0a#v8Ko0GdR&Wq;eB_!<3N?fk7corf$5L4dwiWfU6$2f)4kWxxZos_UAg< z^73G1<&(1S5rgZ2PYo-2oBC=r$mdrrTcw(&uz-oKdikaAOaCDKCB%u^$R_!`@Aulv zrDaWXd+r_jMibK3pANthF)=utR^jG9K6&?b+1a@O5gFMZBNl-VjFpFt}L(eto%|+&z>1^t^)2@-2ne2(GSx%Mw zTF~t_{pMUq9-qO{=1^J+5#~p@<_A;BV*zzLWjWivUpLqCwpMA8hu>&ey6glvNo-wN z*Xn(Fv4l(X&uz85=Hqayp|*P}mQ8QB{c6L~Zd3@wWCcanx;v2)A5`V>9NKrJ?*oDp zXkbt1*=jA+HQ!%Tq5ORUo`dgYY7BUoF|G)=Ga;r!UM*b|n)*l#Tp>>cs$~cNfnVVCSM-r1f;G1ok z{jwjJj2d?D-=Gtvj9GfN1;1XQ@qf+tqSaLIKp7m9m`AL6YSc3ggtn6HGkK(LEYt zMMT92G?2;3al>wkkuPc+7X5<3$;Wf5O~C%mPxOw4;LdAD9eLUH2xZ<|keufhwoOVE zjp&AZk$GCxy_9otu$;$~+N#gf3ZcMMe*+w>4_E{AuoEn=ZLkc@4hR#c1nS|5DcQ+j?Ial zdVVZlSXMO;H3L!jH5JRYWy{8ezyNG1%Q`7DZ^cxBoXDgv>kmF^xLW1j0{abB#{8FU z-ymN~h&`zXe-FH02Nw5$v^UCcXLZ>;-`WRp&CAuhs?DbPK;c@UQV}OxUv7$YYzwnU zHXouIygNT%w~&EmDp#EJdJz~g*vj9P)Gn>mHgmm;q%z^*6YkWtU!2# zuf{g7Aq&+wM9iv~#y_kZ1~v@j6Mgt#!O&hwEd9fdZIFK-QV0CQ_^6%Xl)$ejGB0PC zWYvRgtjNaF1(%bmv40oIE(LlH)1qsluxuLG10-gFZ~Q3j>JiXaDaB&fq=Ql6!sc4A z#7aq^Uc1JSqOg5QVveo{L4!5!Tt*h0@TC7Rt{zXCF=LVu&D1$lW@hgKn^RF zt9EQ!I5h1Lzv*&7$$?{$_j3IwGP*6?h&`NKcU{x4{J+=o#)FY13eRtIbPjj`ne}w8 z_FG_6e+zLGSfo*s^RnliOj}MoYL@lI*mg7*LDN!3EB=6tuIQejQa_L@D2Xg`O-+^n zTQ7!K9J9JlM%h0pM5d)*=|^DyD#6vK>RYS65)3!9n65;olxDZ@OaB$3Srs_#hUh1E z*E=1#s+QF#l3_7f`3_~!`6;OJi2rarg*REGaPBxfligthcLD6xb(>qO>YJb9RAwm{Qn8v{}t%g`5HWuWbI85n%l(DjSQ+pzK+pCvK-3o z5=AC#)CY<=F@5qORe_A^%kr1uYbMhl*dUC8X?eZF?Tv`kHV%%C z{BpP3_xoooWA5+G^`+wUk4`?DZ)CKlST5c;Gxi_E7e&9$lijl68-{KUAWg+((_x*0 zxd{+X#kv|Cc~K6PG;|f@cpdz}RXcnG`q;KZ!o3W~?rOqSn~`|SH}rKYVIIoc8H1JV z7+c867`nnfvK(TXaD#+)xXMMxV|+67uO$Om(uQq~y?P>N3!HJY1&Y%^AuSYB$8Z*&>jL@3x=}>Mkl0?lSV;`h0XKQN z%M@-vnC(0@*jjLK)Z6ah_u8hKus345WV(jFX*i;S$tGPOk*7@HD+$DkOQUL}xXabO z@?JK(OnHOv?k*!$R~cLG_NBg}6qXDBf9FK{(<=M)I7fe64Vb7b9+#Bn8^I?j?c`L* zXv5liC%pZHY=wwGy3`htgYM`0Yd6yNFR^i;`>d@y6j@tWoao~fc(khUcogfdMVS4` z4kxv&te2RU-^^39WWv9(!5#N}%`7>Q&;kc$^CO6tQ!Na@CvJ|KxoWjk+G$6PD4X4( zyvxIIXRL=EWmS@Pw)XbU?VP(q6Z}p!l-sotpY+LZYww(7i`MwPxUfa|-QZPi-hBez zII_AO?qAxp!_SJ-pyCMfQCp2gzh^~(~ zSV*-B#kBW0FhA{(v2R0a`#;=XZe0$qLE)zr!8f4j-s)7v_ce&NTE@{rv7Nf z*7aN5do*4PEiLZyrrU0ydX?@_{f0up51b`xv##}a?#bnh0?JSi9euEX%8M<>JRG3q zwRPLrzH4Fg!B1htIdG)_V<3E`C@Q;3Sm82|YZ=%?jX5~c5Hl1LVwH(W+mV~5!mE}e zcXh=oQ&+CKvZA%Xrx;k0ILBm26{#tZUPMsUESIxwWulP8B_F0T`IjE;19zJ zu=Pyhc703hWm=cfalL9PwZ2>e)l{hdQ`B9jOx>5UU&-55^1lp$aja%tU&b=?a}`Gk zs;leOd)m0PbG_;FdP7Dt#=r%Q3xA-hxCfwgY$*5lb~z?het`0a}S=$=-AN$ zq^k0&;gF4}NHJzXuH-1$Ty14@Kf&>v`%$qgaJ7|Yn7@(MA%>h6b3~buxs3JO5cz4#e?L|qATIUd%D`5Z^Q~R9 zUx+w0TV>fP#dJyMx&_(9P)APWJEejL30bAdhn<>D0e)M7@0m8KWOD|_rkks99F_~U z$_{|Cg+Y&6YS}fl#9S@MQRM|@6U?X`3EUy>$rzt#9{}pODJo~@u5Dbog6%=KQiD zApMnON#1ytH@_VA!g^hEIAkWD?%KUAC9#KuK0TfL&L%x9V=vo$~T$Rii+Kyz%Z zcr|YTAWWn1_rVJP^JMnBHnMBwvK&>bG8m{0F!b!O^z5>laS^>WnAX?N%zd*zwZjz@ z%VoPD{~R}S0LzA&3+mn4`jQ>~dX`#L9LN3){%CDb5X$VjvF63Ex^O{gECAp5JL#*i zDsiJpPwagb*3?cC*#q8vYH6p>Nem~&q4h~|Xf{k2-$8|~PlKLNT+8@B#m)S?x&Lm9 zHjY4vN8 z?Ic+QSr=FO{oG>i?DZ=mZ_FQ%B&R3+rX}9lA(iw%{dgW%fS*4$!qD2Pd5XOqW^>vD z>Gb@AHu7qyF|+{2#*Q2n^nmKe`c2i11NXiMe~;8+BNP{^;KT{IqH}G*cElATvAtoM zic{lpfdz)*_X0~b3`fg_ap{daJ7bRY{gfAu_oFK$EW?JlupusNNZqa9Ny4*7ZC-vS zeu1*VlCAZ+BsZ+1*3jL1n)}a~CVc`n;|Z}Dj~Uii)Ns*+Ae&irItyG0HWr?N{b+4& zs*ADaaxGcP=!ONWt%3D?SNd}?u_M_^nkgkZZOi| zTy<^LU3~;2`}2RHRf2a#8AF&_hH@jdr|(Pu7wB8m(1&9E=JI;CFyOqFV7$IwYZVH1 z&AuI4PiteRVDr?ThJ$$H?8P5s)@=Y`|1w^UUy;VZr)^YgqHf8I*W3robsTq%$kf&Q zsQ-bALd3zzAoKLERJt~-xoNw)IJjVze2SgOP@Ls#H^lBXweME1k52krxg^@fL|(&mi?Lv@IcG=hO7?H(jg^kM0qL*j#o8kRg7i8agikNc? z0*;(PRTbHr!sdryIj>z`e>HHJ4}O6ZyywEes97c{nVftm(Oq?4cQn`5l66;9$kGbm zx6(MIrxiYNat@GHMfK2jR4Q#Z!f=~l2yct(tfJqgbHq!8qB!x|d7-Ne!wJ*&POq1KM`N$h$W`!lrBXcD+QKou zy>>aPP|eMmPZ~|y*+$dZO#mcFIC`TMsEpK$YWz)9HtAjzgmdTWh)#_q-@nueVOzrV@Nm{pmiQN9B zzeo1EkY-JHF0UuZzE@c2-MaIddv`%Z@ttMexoh?EMMH~xEgr=Xx$wck^Q&3S=4yF0 zr0M5x8fHYVIyskm*1^Gef?V8CB>Eqs|Gk#pH*;CKf7ISzSZ*qtqmgnv94awFxty}@ zN#eZL3h#5*RhYiKe5f40{86})np zdDnW(yL?~;zhfgOi-X2qjv__I=H|h{!Qc&G^KTG3dI6mI)tSt5mSXExkT5T1Ud9S^ zE$?;02nRa}#7)Dp7L%kD#}BToG#Jyku7%6?7*&vTUf>659C9I#Eu?dV4~aV51KZO2 z(TdcKkNgG@^1LcZ`5Tum9UbK>?RKMaA%Ed?fI6j`xtXq$1UD6T+K@bRIALR2ZkZpr zOlS4xYBeX3?$v`MdyUwH4=m*2yqL_9aR&QTJGO%_Lu7aXWgVScpDFgXYL_H6;-s+3k{zLWOf#0if3q{pSlM~iXAd}MTg-?glY;y9Jv z^`oQFsB&rf7%Z!DW8vz;(o&@n6z(Z>I+c^|^&JiHv;~f*qHagVbH~o++I8~=da8?e z_SPJT$R|8@4-D;TfiJ9Ew?1(!+p=ep2Cz1d*v7IIJi5fZs}}%CWi={$)YiIoD6V*U zF1?6CTs(1gkDFy*6i#HID?!5-2Q2fx~}S4`dEW}(_iOYR?#{p;YUF5olrd%wPCaz$Q2HY$Kt z_APi?PCr7C4ygYw(M?|hiOp$ z+uPi1cAGC#PM#mdnPP)*CQ%pH3N)4Au9tM+E4pA%sFa&yrGWVnvFNaBWxV*}HN z?C@P-Xp3tYimySj-sJxAniYINjKC!DwEYBTN(ft*^O#0GJM2WS*ByQ}WH`G*JVP9v zzFP==_v8kaAEoD}htdsEzqHO@Id|p8jbtG?kz{&Kdfe%mUBD8}-R(A+1f0H0H${{w z$ZQhibbIJuXS6!lX^CGov5LT`>_;HY8ch_E5{hXB06e8A^M*FMNEyp2AXfuqHB7g; zhh^=Ob(kZyUG^js$0q~DjUUq?lGeFrYD;Xza}0gQGMIiyj)uyV3w_jNa zOzwA4w{U>K+;bt3V^qxYhd?io?rt8Y7iG~~9ntiPt@5CNODmWzKoav7xL*$F>lPO7 zjeCwx4sIFbmQNW`F=F@fkJ;eejumvoaU4i#z@XUV?9Fs)dNr+7zfxd^``K`hh4JIle`*$l$8E;)B8@=Q7N z*YwW!!sa_AFB3f8f~<_3PZJv`ufe?Ya#8ffm?y40tndrt$ALo~w;;E7*>`Kkjl`G9$ zvDiG9%{KS8w)*|%)Av4k?}HCEYn{!`?(VhbwU@~xXVpE;o2Tae!?QY^&8*L(+!;Zb zb#Kp})xBdh8?3*hfJ8b~ctCV<0W`br7%{d+SFT)nhVQtVYh-F-`kTL+Bi3U}x2#KP z-|~uu4kKMR-Fh7zYs|`|QSa-Ht5N3cFaT+W&c*adUe27)X3M$UM<9z?7@&u?s=KP8 zsqs)fgvb5k3RI*yOw05?X^_6@-ft=e)5H2JFs(QcAKZ!Ui_SNL9XS?fMp}7Y=j!n> zM~cFCC5byh(B<8iVWD$#X=HNbcapb7b8^;^=+AeZ#3tKYA=M z^fy_-$BQMLFV=PCItAUu?QO31TZ41Q4bO_|Xu;7O;H!^`Lqg6gKAOoClVmfpc>GJ2 z0syw^;i&f$ib@?Nc47rFEmu?(EAgXzh^sBEN8J!mti~!#)6(0_$1_tt@bTbF0nIcT z3Z0egr=$MUVdPmgjZE(IoR%Ckax&=&U-(@FYfOxKUKO2@pUvpH-qi!cve)bK670IJ zmla_qn&&w+&6L64^0>KdfN^zTwC`o6THcEb2iT2FA#VH z9wiWX894Si(Q()tHda@?P?CCH?`+3`oIbfZEjXVX3W!hoCxcnSoBLNUuu#(xkUY*y zf!taJ<@?u6&n(<~8Li$|-*gSkuN$tp_NxBoBlUZ0D{^tw^u(3PNT#17f;v#$^Z~jk ze%H3KV|q$%*-&V+x#M7L7_PcrRTRD5%esnP%UB$1lv=(txxMBe)7xu8h#LE%CInO? z8f4e9dwUU(i-l<6H*G|EUn$ewChc7^AuQp0rL1g z0`2Jci2Kcxd#X+e;@CZk*)VPUo*RR!gKqc2Js0knLgwh!q)&JDMxEOxcE+A^yB5#r zaIC_2hD1^75Eu%~+sQC*qr&|+io=>NJgqfM2Qzl0*|uYvjABwEw$7MO!SNJoB_&+3 z?F3kuNvpd2yN1emheK2tFmDqQy|{1ZJf@rFP|gj!Xh+lX=QcH~2-NLdN#~YIjg~JL z%Z4#g+T>Leek}ckR16kJ$I_oLirjVd)S zIMH+2O3p*+&As45Amo=>6lOHdccLeJ3aA!afDxjQF5$U*`-QJUouZi*Sil)Yn{c|wvv+!mvFIBRto$J zJzC1uF|T&eN)~smYqHBy1>9r&hHO}}N@NxNE8Vl5p8^nEvBM)9xkV?dh;tVg^X-Hw z-a3|EfF6AxoK_d6DlMX~Rv1)s{Cwvo@?DZMcq zU-UZ}go%g$qg}6(8;WdX*(NySr>x+?MebkAZ$z%L-Y;<)MY10dl!12!6`HurKZ7_{ zh;As#FPp9v-Ng+jRBnlT4_CRrt|D2%9GST&F4)*>HhlKevSGrGQ@)wRL`4drF*k$s zUMnYk?Evx0A>9X9@X9)$0`Tp0oeKY`{Y> zsqqyfbMXF*QsxeFH_7$H005>C`v~LJ8X#Wkty$Yk3)|)maqWSkB)X#R+u@(&$3N%o zVaK5u4C0FYo8al1i52u&(|6-vr0I^^_A4l{y{zFUNmf(zY8g|1EdVGE#xfKh0YBqC zD-%l-v+?_R#}mKTikKOJZxAV-oV1xvql!B&E{P5i<#k>x_QoTqy@gN;6{UB6bFT0wbk_TnNQnMLkREnNF45@9CabmOD4QSw&Ga)(L$xznQbu+?pF_^&9DH%-pn5QbWa7IeT*? z`&J6}?`FRtQ%9wW(2!?^pLQJA!TG%HMAS)iTPr2tTFhuB#Za76Ty}`1li<)ZuvKbZ z7!E%Lu~bu-&emef0qfBisLPMWrxU-E-aJ}Ps~BR|Y-hc*(p*_zUzCc);o{jNAJb~` z7_6M)1}86G5J$I9ucxVhPCpLFYgjzc#h^A;xlvA#SD^)tqsTCqxcSx+PjB%TwJq*< zBS3DDghZtIykY6RVj*#f8x*`|pt{R`$Hkc>yMRBX%H*AxRv~!m5U}3sQpR2{yPifk z&;ljB+2IG$U!`{d3;{I^Mwz{>wf0hDX>Cos{vs(@7E$y00U6wZz|J&KopOW8iIBNF znI@fw;n^;OfDE%f+O-fl&w&`oe!+f`s^X>tEqd<@M|lsu07Cx)2%U4Ha~WLi;UW?@ zv?)*f=RImzYQfe_*v6b2%GSg6`X6FM`AkY!zJDxLq$BB? z^qBC4>#sPxEL~VFWF#vv14%lpudd?5v;FaD`EGm%=Bbx!n1zFx1)Q9^8q8Sj9IYLS z+p4Fd{Ih<$_%*=f|2#ysDoyVOL^0r2@1340&hE?DZ0O`1U_Lju)~N6K7gU8Y8LS1k zArIv^A>l9K$P{0}N);J-?C2FooMJpW@(H6VnAHIW>cO;xc{;NhVYd5zYEWB^k|M$8 zVo_5GU;6lvUoh| zj?1N!DerOdRCEW&J%H(}1Jq8NkuWvUDQL}fOvaaNOpdotr>Ra4I|kZp3&Yt(`?G63 ze@vV(;3(I^r39H&&!dnmGk1-N7w$xO#j_MuXqo@au){5k6-8Ez-V>(#hz%}@tPNdU zDF?g@C9wet3p{MP%0RYR%Kl~My?uC8z`3IhSwCkOWSejitM5|~8%^+UH z49#O+#R?+Fb)ASaMKRS*`^d$SZL4&8U+DKHXIHKR<9$ZDYgD;+dq3KY8jXjMdQJ_) zhcD5)AZ$K-_mfXP{LqaXg@@111>J@jrl(B>T9}^Fo`12H>5*Od{PgMO)^P58?(~EI zkFhrmlPf#V!|plfF6Z8J@45R@`@VHmbyZg{)q7WOKm%w1gTX!n3}!I}iR5zhWkct=fa-Vu zALdbiTPSiS5j~@-P{`*47)+g+F=iN%yN2Vic0m1F#`G+a6agWKr+?j zXMFYs@yFgU$k%nMth=&#(*huyo`((u$rmkE!Mm|GCuc?et9Y`8A($m8EqPw6)0l76 zYEkRa`tkG>t}jnof~V%i$7A`U%JL|J4nNJ_O^3Zn=p`I;j)niTCP-J{Ohw*Q@fAai zH1jFbf14QSfoExos~PfR%z$Yk!WXWDu2RWu-k0-dN(oe5Hy}=Xrj#~)-;>5#i9F(o zghT!m8@uJ*Y*y^gtw(#zl$W#)eBB zpsAYXA_aR95ot)({~oICy--e`J*xx@fq_yCu2{AqT2|mVj>T*iTc@^%sZv?D(2cG;oq&PoQc9l)pCuR9u~PVEZU6D2muL=u$NRoC`J zy6U0iS5?!mZLH;CX>EU3CWcH1`6eXikcwRvplMm8YQAC0nnc_rOkVUjkyPAY`X_N8 zIM)C!v3-j<)69a_Kn0+ zd5nlCd5eLKFp#0>p8Emcl0wC_ypkRMQ}*oU-?M_R11CV9b~BJ96+-cK*7cN}6 zIE*ed%+6EEJ@#qd#h4x{hI@~6&9UU+t9Stes+Ofp4rt?2bFn$ z@1z-F^lqkh!HbtY3&W);S)CC}dU$IUY%Gd2pW=z=D~3CF+qL-?AldT3tQA}n-Gs-& zb09ImC{~IAy2bwB2LXeLhUmJoE6W!-(a4JmC-c@#DP*u^zMsWjx|WcUQQ28UY9>R5 zIj}#8S*x-_jYTqRgVbtS&B5Nz4$Mk+N@9NJU~Uf9FI+h8d+aGAF@D}7g@uu%=NO~K z3otx%9D+=I))A)wGeFG0#NtSNn4isf_dd>m+b(r3ruvSwpxaegl_|3$T%^y|{2&{a zzPib^=4eGKGSC7ggOdT<7?jwblYmjl8RY)WfGAH=?}8yh(%ih|qO@tt`eR7F=^)4T zWT)y7T`7AE@G;<*Yk0A;;amn2l+5E<#Mj4**)e`Uo+gSXV^C5y*qJm+`MlAnR$aqA zCEYQ~gYy-Mfvyq*+|y{_`D$=S0D@|wD1(Hm%_P48EN)6(-{#WRTwd>a)%wbl5iUQT z(0|qG9PUH}U%oJFe(n9Kq@0S+E3=MT%$Sp8`}xOgKY6C6%PqZ8!ZT7ym`R4=Og@vD zX>+bme`eDA|45o^Y8n_v?wBB1z3NNz3*TAJM7bc z^Lh5^7D$o<)&82{Sh8ihiY0NWZ=-y0F$!fDsq8@ZklM~zy1Gy3h}Y<^S^UAfaQAtZ za({bup%vD>daG4o>tA8(uUGU_AoOIecXSM=VDh6&KW<3pE`NHwcWEi+-1vs?S6d$3 zNWuinCajD6aUSPZ{u%b^-Soa#fePBAWMXHIc}} zOwD#Q&!2Ok)~(tNTD6rj5g-8okA1X@BnyqI{Zy7{tgG;TlC=!^>hVGnQGTa;N*2mr`=7x3H zr+F>~x#e;~q-L}Euc{t2$`M^6#;28peKj%>ZP%=X?`m?y>{X;YX+`11%Z%X`9LcRP zqaOd4jC*3`RH~3n4r}&*E&Q4Adn}fi6_$k^J_odsUhUS?rLLV$=ezl1yua}p4X^f4 zd_`8g`8c*1S9fBgK0igrI)M%0ns1FnsGIxd5@SLBjGSn*q#KLF^ zlRnB(NtNV7l-3yF5Q95uX0_k2SN1$Zn!S-wfZEKM5{pbsc8jbJRz=aYS0#}MWT&WO=?!m)O_{wR(LkKoVzQ7}FvuZe@#aigyMs;}tc8P&qTdYN|@ zrEuwG{yGaSCuZ1_4j@BBv3B%76J;Vv>>$-+F3&Z#bO35nv>W_ehAtV{RyI6OCRhqC zCsj8Q--&!WJ%be8RIz~&F>MBsf(!#xkcC%z!DcIKL6EQv4_RQSx%z(#f630&s&Gbl zOn5?g7}VmsLE|1fh|qNHH513jB(G(`Cv4B1zFu8IfhKwr~&iB`s1xD))L3n6G3o=Tyr zV$*NRBGQ6Z&6X3nc7$>bhNL}62$XP>{RS>w~Ins=2SeN;(KDOQ$E&1wB&B^&!1NUw;Som>!ftiXr+7`mRpA8 zX*Ng#Lo^Hrr2`gfOZ?O~O-=5E3gLWSrGgD5C@N|b5>CgfE0CHdCZ=Dth+LwejEz9F zL7a^nPGEZso$Rtbxgb0(+#bw4bq($&_WatpJ9l>X4-R%O?(OZi7Z&E`c310t2HbWz z?OCnn>^kpec^|Pgy-8#-*@K~FJ!W&imz5sYR;Kz&kN6CiMk7@nW@-JH{0T`KyBj7F z73Q5JEdH2U)1Cb+u~&P#^TS;D#blql!(o-|rAwFY&_ka33_#L!z$FTP+VhB#!bFoX zA)mJ#CFy@MV~dFMz$V)~ksJ{_!8>;ou?Dv7e%$jIHg9lVzDvHWVP?{a*H$tI9RJ0g z<6ISVKJL-oXZDAmezw-P9z5Q;_~2}3=fQgC*@r8g&cns!<%iXUg@^G_%fkXva>(}| z3J;GU;=8W$G3*~(rSNDXiW#IyT3}c;IbNt;m?ZVXsrxXV@SFnG!y6F}^OUivufFQb zxMjFqQ{y5Szsi>NEgkKcvZw+;TmxS=mgsxq68A$2jE4^&zAXaPlvRBI6RO0`(+*1O zaZkXfcpg??XWtb?Me@#gf2f*@;c6)0Lkgj;Vi94WVv9jf>pI3nZW39QB&Q+84b*Lr zwh=r3vRXz&lSB>cB17jAyH?c55+b`g^F^+00v&MMM85my><)0vOkYR{CFWP37TzO# zK=={PTJ^>|5A>Jbxv$@S=cZm*PVRj))b%|l2=)X~+&kDl++JS(^xmi6rE%~SJ2k34 zJvu&ml(88J^!i@)NH?tH4dH&s(+Z=c!%#7rSDKI6uXo+AV=iT5Q?u5IdInHl128KJ zU90sijq8nRvs{2!hJKNHNtCo?4cs#_h;0fmpW*`qpli67p>7b#Qyt6xGBava!rB2G z&OFImD8onNkn}bS{-Lu(*iQ29m1sTuf@Z-?g2jw~7GnP!Nhu+fh=?ehEmRYkLo-u( zhPFZz0=CN(Sz{mcpW~in#O~m_uqPY{j|(pduL>XLxA4v9Uhh44?xo)4=g#$Zp4;fH zJh$*f74&+EGlG!FV7$MdNU^PdKJolS;8VJjoR%>~2J-t2{%r2iu-W~Ng zjhs!$aDd12b5le<^G9UT!MHs;-k#Gg+0XfunH~0a?LLoqn18J%aurZ#m+Uf_RZSIX z6h*En!VapzBm&Mw1d|HvQ}4EHvZ&ElZO8xDx?wPo>;GmGvgPQ<7i>Rz7nJ09{^^LPlnE_^la}i z8a8;*O?I8xsc9tgUD!=I=q_^&9{~wSJjR+)my_nReSvF-Yi^(`nUJPj&_Nrj_eU!T7GmBpUG}*OZgx+xW!rqT|vx8QQ3W zJrv|1u$B#%p5NA;#*c#zv7COJXE@Ccs3Dgy*W+Xz!^7Fc_1lZc+wO;{K&841>7wrF zz1~He)>T7pInaFq( zd2q-5$r4XaGb?ghKYCm&V*#+T^hjsU6wKlfTlo>dwy&VD-4H`6@^UG27GY9^MIeQk zGdp1F&%vf`>AzsY)j4h3|6#rtxFscid&=xLn9_&MnrfCpt@@7WE*j(FQ+1}sZ6w88;-ONrq ztVdfDrurFqj2eFtcc4#dfa5L$=B1WurC>sfbNVWLxMno&g1XVjS|(@!_8}G!u>mxn zWb5LA#6NM3q-f~5K*cq_AevRlz#MQv>KAyA&q|o+cDo-yWO-nz`IUYhx@+%`I8n>b zT3E+yf6uv!EjmjOH%wirXjaD&qo?8?@S&;#uk!HO!wWGFNKKOViiA|Fdv=Cq3WdGx zvzuoxTU4M*be`GXkI%2N-Z2^)~0@2p0LuhKQsq20SQGz zDfl{Wu&|gAyOw9xbmwDik@jmU#?ZBRd2@yRmajYWzyrCEuCm`v=!D;! zT`IcA5eJ{2+MvZpwvW$Uf`tRAK%ppE-MMmWzgI`-@wJ%0^*# z*MIrm-MhXC;bs5wBSa08EdNyF{bb(asJU;_u#ttwCbEtuI7S3;wPW2Zr&zFWX-@;4 zc{3JJAn~4RQ)iPoFw8q@jRZEgbSF#o(B~Nd%?L@m4%bpqk>~-zO$tRn?Naq4Ntgz1 z(xIV5^=wkbO}5gqX64^bxC#rZM46aGvte{e(+w8PUGt|T>f;Y({;t<6$fkFCMah; z*#Yi6b09WbL}n!bocvMC4xqb(OpaY7B5O_yd9Rn>B9j*TkmS{uyfbX}Wg;W*a=i723kq?1BI#k@I_yYUOYYlkn%49Ni&A7O0i zvc}^#llQPXS3=cb!3~S{e9{O^l;DZXP-eG5H+)NH0X#`%334)a4&^K{xDy*;5om{+ zrr5~sLR@nR=7%1|9W}f<SNw%{2NW)>W4e=~zL&FsYcD}h)iz`UD{Ku6)eNMVElaP`1Kpl6H7_mkv!=R^)voz%KTK&_S;c)#ZmIa1 zsEVFSaYc8Ya+-l>sBKkqG~SFY8W-3J_n5)aQljA`V+ayp9<}@nVk2N`EcQ@!W}|c` zuPY`IktAz6rXCWJ?WmG%LmWB~tIV%LkC}L~D@t}~enry|Peq#V(~)!CQVBOj_`s5F zi7azdL^wVf?$}sOf?FcqANvef9o#4{-^!Yad#)MW-v*dpS*YP7Bflv zxAsrluhVkFCox%nSS{&~OMLy4#%S0pvLJ?Xo}0x#dvS=4K|F-*&nYAyv!j%~nf zz{go+EUV8$6+&5NG34{iPB>?wZ=yJDzg7TFE}&_o>$!OG6Iy&VF6hoKpT*sUD_M%t zc}qgN$sz*N4|(_=I%=4q_%IMf~E zT^WNo8+a%@Dcl@1u07T$CC;BY^Z4V5oy~Kb`}>LQTN@jRAnm2|`9yWSwYb{qcIAY8 zQh9cI#iz1RBR2NfQV$jMPFu77iDvo9@KkBok}y4Rb|P`J&t0Sk(zct1EUpTP+GLBy zLGunXGiCN+vS1R>G6jx~6Lq6@hkY1;-r?QfPsr9?19^`*F~ESvw#gPtUqoutC%8>) zkDHrx%GH#N?odlA`Ts^@JxgKN>x4Voev~nfu}SMS>I8I_|Pnoz0b_ zcIYkw`}|{%9b8)x@N#V~{p)G)>x-bAUbL?X%ge$wdof*B8W*2z2%Y)PcnqY|xqH`H zSs9+)(Gi|M(w$b04{}Vg!UglazAyXLqbVDntl~hqKb%22-DUb?lk>^JCAL1BanWKh z_esM&Un2IF<66G6)UfRwRZ}6VZMf{8YKTabHIPhILS)Sq43XeSyM$g&r@smTIlx$9r&5%U<2iv-oFPvV4iyJ^UT8EAJ0AY#qkc+NnI3IB;zXDzNGfB^ zwj(ybvC$Z@i;o6#jx7E6vMOJLimHhPRbfC`L!PWDMb&f}?(-=yWRsA{gq|ns*X9t0 zo+tz64|*ad4q%pjo7fA6ng_rrVM8%}SE{gA&KFgP0MzCE!BcRxx?W@R2)7m^xG^jKC&V`I68zp6kiH*_EXU``U zOys9@nZ0f1Tynkl#mp*SG$>Yx`2mJXFUKA5B9I4$VJX%M#2u3;ErxR7NMq*@*dDhy zKZjCwZMWG>CvpLUG$c(PiPJ~@a>r0&>2yjzg;xW=>ZV#77TPMz?SRc@(ol7LCMG!q z3H6NWzfw}IT`#!dyim*MSv+iHYZ#f;d<)_xQcF5fGN#|u%w2CbRwr;r{a+&UTZ??& zp~)7^V4+|~n&@6T`eTw(!~wWC(0B0 z%VmQ905|4rYD%N0;GMJyA;)|}WneAXl2mColF3TodCQgMM-s=AY|*e!cF2q}>ck5t zH)xuK@7VLc576bu!9}Wx!0N9Pd}k=YxOJ zV(|RQyjZ2SWOaf7uR*LCIdLmpUL#Hfn-_>|X0B)ac6NQu_8%3x$Z)Dd3opjneFYJO0(GPbUwKA z!IS6il*Ho76nouBhGulpr`ltVW!H|M&atbD5#i$ZJSayaGPPsCoPXmjU_^0}8et2V zAgF_i=W@BiXei_!;1sdh|IWCQFrtoXQmNsqqP#%tl;lQf6NX;C0U8NIAqMgVBjm8bwK;!qR_R(>1xY!yCU-@wi&7$u`6*-xM^V$m{{veMy=n zuKOY+r}_epP4%C;WZeDnMSYDL7%_-U?tIM(HjP|;+eI6>&Mw%V$>=GAtk6u7d{Z?g ziG_CdoE2<0%MuGNoMO{J%nA(A-Ao3zbgQ8k3Rsg7D&z7oZ#X)_oR@DR zJUTpmelSeb$@4=+w&_uY*AU=6SpUfM?*VjRhfe_Zf8cs{7EUets?uEpy{59m{>Tqh zvV1HdXxrg)>?Hc>whQg|^tJ*q+L#@3Eha{N!$>F#b>R;0k=T-Pd<>o>1nxiYvuI98QDCBU7arN!f;*(b=1VrUd{9+#<^?ISJWp*GC$I!-)% zyf`zxT@jcaE+R~OUB!So!s!b{v8_qHo6u$6j`>Upsgj0Mj(ZO5(X^r~l8>R75m8Cw zG=)n@Ea=WVfehA~ksTq>1xsGnYfdZcsp*pT^DpgqpHo$M+31r`LDhT921K1CPU!Sj+T zC&`qo3k)7uxRavUCdRCA^8YWb9|=R&>eqyeSK#z@VXRxKF)vK z<)R}zN-Z)k`5%OT9dkm5abA2S&Wqxyrk6HoSgY+n*FuA;{bgAh)?X% z_N%G*B^cAu#MnU|M=#fJzF=KbIiv7R6VRJq{$dA#97j(#9i3y!NSzs5%`L8LywvULz^%4}K6TrO8H z7GE)aEK*|UF5J_VjY8FijvK_h+lQVmUlK-D9X^-Bx%4-MT^9c{E1M}6^)rKLu(+tN zFYhgHZRw)fH`ms5P9{{>>)*4KI`$ezkmgu&JWk*C`p5JihIMz2gcgrt{H4WteyHcT zF2@0T#;;TFg+v&3f`P_%QMnqc85ROU-NH!8^si#RJVlt})tZjPP(QPk z*}5QPi>YcVip;EedV%X0cV+MRsPIV^>PbQQ_MJO-O15*y1nB}wH{3pZ;wK17Xo_^* z4nIcp8`xF@kp57q)F>1lV`0aNYQL8CP|ztOHDOVas&?pcV&4z&0`X9R@-Ii)q`d#5 z%ua92|9|G<#jD$oZSU`c!TOCGpg1!FGWk64ZPNt3box9ve-hc-)4w>XNKK6w^(O;2 z@eQ4rq~QWgSI>E3Sa}4XPIVUakt4@cQIQCUfv+;`zRnPe(? z_mGj9t#hw+*_L%F!y+SwHTexGAT^D6znl@XYK?U~YeHvqQ|<_N2dyVOy3}pe^J=k} z&(rO5=ct4+UEkWG?6A<9ovPS^K(DT?9n!<;RXr`~K5o|D79n?{4m5^uc#CkD{wcPQ*=#wNJD;!(Idmdjj)?s%u_1mI;x{amcM#26h9)w!W4J%k z>n*3l`5#1pte09QqJ`EANmbL8|IWh(j`;%rW88(^;L#?o$_(2D2{+?f4ECT$g8Xrh z(nyeHJZJFe)F%7IJHQ4rDqgFe1v{lRK7k058jD))6d2rJN=aFU=gY3#V(4qhpPjAtBq7mbKeA2B^RfcpMfO&iyBia? zjN|G~>c0{G7a`41+p4f5TojfE=~AQ7jy!L7ZCTByOc+$0X&kefrkR*jaFmv*~ z`AJdaXf$m?TzO1EaF`J|#(lIffp+21sKWSE-wewrDvJTe7c@_I(v3|It``~?;C|iJ zpc^FUM;~L`+BDn?VJ@Y243cvhS}UNrC%Tph5!Nd|mro#f#Wo;|Ipu7SV8EOxsRR*e z+AG7H<)>e_14D5Qcim>zMUtS_L!!mv4I7oxk*SJ?;bw;u-hUKp9M7?H!2Cm+luFAT zT(iTlM^iQS!)u9x(CPI$qmwX7*v`lN9pUt3%p-CCk%M4or8u0WnPQ%M6V!LWMu|_; zK3L&yf<5#G_3k+#@iot#GyP|aJC3-Tkig}X77uaS$@=zQN-XUmbrY#Uq$?@vZDukS zicHfV*rJ}>dBXi^s!I$mSZ-WRA9_GduoTlT~+Sb8m0`z?Nw>J99wk!A!O) zEePA~1)iy%V7&3UpLF0)pw4JSe-uib46V2>V2$C1?|UPDG{SsrN;G$L=S8Zj30hN4 zRl_=rDYA4Wuxnrd=hxZ&up*Q(LNzvY3<}M7RN^c0EmLPmKr^`#1yZwIxa1k#3K=fY zME}M4)if&JK`(o_eK?bby$y)V85SH6JE^nSfba?x8hM646cWrQT;VbGK$&!^(lmc?2yBlt7Aw zn&{~jSwV>*SEO0Ngd~u!hTCjmXeg%Wux!owv}Pj04TthywZ7|R_F73Vr#M;O8LH5X=`T^{4GNtzCax_k zro}=JsTp-t>-kR1Lus)np)Q=~oyfUrQ5Mos5Ueb%FRTv+E5tNgE3H$ClVd&Wsc1HK z@I!{Y5wPM#f&S3ffBysVKUOgYlBh(NZtKnqs+`j1RQ#slo&kOq1X?1E(%gBN5lRow zz_26LHR5jN+f_$WbUUm*qdV~DB&fWPk2k+*DY|yoklHC!*?X@iH!qa3Vw-JzHLWWh zVka~zA);H%dT8-_aDJA$&=M{StAk7g>ND);!SbHj_?7_b!d|1XC)7o}(XC)+J|>l} zyVC`(5e%A6D35o0Olvdt^NS-rvhTexwT~Yh)L@Zn2$*LzGX^tyg&l`vl$>?YfVu~7 zbE^@ug-NNHD~4E_HRJ1iI!z&;tyVwhh=FBd{iC@8k0*-@Sj{>a(}AW@)kUCXZ{Due zzD!H<>SiSgTLXww1)|JoRzkBSkp(LHP)CG!uyXtAFzfNSurny6qC&P+ty*$Z;jP8p^wX}V=`HM1e3%D;{Cz71wac7$uf z3%noT?ge9Rb6XZ>XI55>Qmtmh#N5W^{e5Fd&i$?v{DQA`tGzLQL_wc}9xXe@sC zD`j#cCwOJtI&fSelmC^N5wv&|?mpuy3g99RAqdq_cNSSBzsE&NcrM=9)~q$EhV168 z0w=PK&>)$R2e;m5>84>J%Y+F{QrA?+@@4|8mO?5gd?eP(u%1~k2n%>rYQ2@wG$qiT zyk^BT4ZG}T_RBrWMkUq)POI;_%j*}Mny+bni=Ld{LPMD49>qLy8$^jA!j*d6kC z|9`PwPssD_S{Q5fP&m$N_lDQ>(FKdY^LId!EK=|0rWO1Sry*zO1^vW4QFf{KI#)}1 zSkm!FVm$TjxRM(QOZ@**Usy* z0T(!ek?IkJ#7zS|;g`cw_6^J~o5j^BWIt$MM6If7F zd|>K%&D34bEos(9QM1;snk7uJrpTg*P0y|XnnJD$k!-S%RxB!pOz>r9DP>!A$|hx) z(e`>Nkm$B7G0ItLl$JzCx;ba6P{+0?qKanKHR}P_^QvnAK@CdALbhrlGgG)>r!*}~ zx3pXUxnhP@Ahyk-ehs;<<;$Xy9QXP2TTkQ6>N1PEFL5Tq^Rs(fiz{>arSj73EKRw+ zoZVYoq`}-AMT%0Rj|h8D_ohr@vT+hd9%(HN9qoL7N;QZ7X57aXXZ&Lo<@sqP_$gC) z56jY!lGwX+}#qbvvAReg1P-dyOOuf((bq2?hs`1*~Tz`3ao^6+;v-`eCbcqu` z$5Co2*2(-m_7!Gp#xs@{l{yi7{A!z7^J-ZT+^Tyr$un$rnB*O*wSe8GU^Fl@O;LHm z3-e{lLU!Rk`N>@bUXnz>`4v^UvPAdR;0gmz3~+rSPGT+rv`@Vkv`Q#SzuaujwY=y< zNnjN)U}#?ME(9gX(GibMOtm{df>azPJ_ph~PLyyhX>ygLb@rw;lG9z4ntrimODj6jA$4c|(Q4+@;MwuV8PNju$Hcj#uyQKX z{1xVjxwwd5kMJ4ly=X8wqN41U9I(C5tS~@EYB-7cv%)AC>TTF~N{B z5Xc^|V)`>-7`RZubdHEnuRZh8NTI3-)zw5+^WF%=$7`mv4tOX0u7wf1xI z#5aoqDmT?D@Y2kAb@d$7+O$101LvhK^DJ4IeI(ao9}N-r9`QBtD)7MRc<*~}I=p7z z2|{nw$+x&Ll3r5+Z^R}y{)<1(+(M05JBzyg6x)2Q{IX#}$2a1hNNIUh)Ql#su%$WA zoi(f}fT3(1A=PwL(zsM2qGTu1QhbxmpJ-BDD-nB1cZg`3RmHK9VVSb5^TA&#h3g?w zmyoKzk|-;D$XnB71&bmC_WjUd;VKt(pzJ(qhBM^P`*RkPe}kQyny?|9VKL{{Ak&(? zSUJ1nZB}C3GdsjQvnHujW`)@acgOKwywP$#S|xv1#sLaXTfJb?y*>U{J`qyPN1pA< z>y~?%r|x#!azD#86k~R-d0EmbV*Gw;;FM)VS+D@jp2oPJgZxCJP6jJV@>2Fc* zJkQ3SN9q=e-kU06Nyd^oS*PcdmdE^yw`CBK**~u7qm1Wt@qEvM^oJ}0O-qtAq+le=4oI_Iu}q|?q9il308?7=nM6fFk|MM1k=gbD zU_D`3Tocw?qdMfc)Q(l0k7_GvVN19!JjHhC-k_a)zIiYAgmB}`^{Ny_IrfM-RSUTo%tem#{X7?8@(x;agr}%LN&}Qj^BqEiG5a1-?2w;z^k`!-+qza zlr4qNYq<7p3g+0Z%^3DUMz>bxsr@NVyAkta<=7`B6ge$F5(zgUiS@h~GXmLRS{h!5 z>#m!KqB`?L%2h|9vIrF}Cwk{j0;`H`xW4Wrct>!8>*%VPr?@TQn?R&k3jkO*km;(- zbgvma<)u<**g5&9?2i0iybGp~6wV7z$M@v&ptAi?c%}3Fxo56CT?%ajZ%XIRb=YQf z7IQg4=*+cCrCO(UtkL3lFm>v>pQbW+L?i7eJTx<+V=I1h*QZ~CtCFb5y$wxkAmP)tl$=L{pdgE|Cg>u{Xk{b0?q*BdL zHnF1Zc+A#wRJ0|%{2K2CY>I5?P}fW`Qs-OHpRn!kx}+LQ_&H!`F$)0(=H-N4UUt?-}8} zd=d>6@7{d;@a*o~_IAiZ7kkx-_|0N4t4CRZagW)j8Z= zF2>HClk#YmR2eIdoVr`nUuJ1Fz8^ITj9RVsnAU}LiSNN3#loU)1;Aj=SlnDY&mjIP z?+`cFo&wZmp18)G2j3gA8sNCWj;>{geK+23^LXYpDp|G?JS2;YYfDRmr35O@ARZ~^ zLy_4yBvv1**H`?4r7*i!)+JSTivjz#q^BWuB!w`;$1DB{(d-2DOi`x9NeiReJ+IMa zgl&eAnge&Pp}8*H+3a+nl*y>7508_D9!21%%<_$?4HQ3?!1Ak8Erj04YAwYK%M(<- z4}4}>%!86jRY1!yDH;kVRsWaNOBHk+g_$}irCddCGy4JPz@}<2;5jg2JLHoqzNTzw zR+Gg|3$Ai?qYf*ZPkTgZ>iuMvqiriwutdL@U4C&EPOv#v|C*QuUWnkx`N%@lmd1*W$5Mu)r5QHCO&0Fc z0aoxe#Zn|I12Z7$=(4LVHDIl!`t}m+5XZHUF}t>= zba|~-jB^J(<_O~&-Fa7+cj$@kW@mpta-MNDV*_SnK18w~6X1@FL zr{@Ple&-fX7WB9en@SqQD|l=PAN$ZqdIH<{7YZRdu2fK}CnRzGlHqGMoD)6^A{C@hlcnkYE5N9+4HBPIF;hT|Fo zrJ;QuCxjl9Wvep{)5gsWJo7SkD%IGjOxNyDEYnz?-J52!{TZ!mx@Vnb3wN+A z?ZXv`W8M`|izrW}DDG>Zh7GF)5*pZrDIA-f{|T>~{C$t}uq&Yo*G+d+^krn~7@Ymj@C zdUND^AB_o)v@E6*@r$t{P^_ahjO=4|oEZGDBegW$>CJxn`Ibacfq{4CJf)d|qDIvs z?-eVuGn0>dq>9}lE&fu{c11^WH5*W0^b9N$1tuDx8X+-A!<1)xEEKg-(vG7lLp3EI zi0cHW`YCP3B1&B|q-X^S3ig&6HT4Gj*Ri?Z7i9m9RgE zPeoU_D7+y&JLp_b+;1&cuNI`#{WB}OD;pd4FDx7^EHB@G<@W8XSMLYF1(J0C-t%{! zfB9wezWIIb;PiPKqs(K~@}mRA5X|(6I$j`|+}a{u^*ao)gu={_lR8tc z%Y*I)rzq|;cXwscFg)2iB~dut<9F0UJ;9Y>Oy4=aaw2B3OYSXY949?Z6V29`d=PWFU2AOx>=W?FGXD#IiKlYr4 zFK>n@6DtQ9AQc)#NP+tcy0b;>T`J}nE|JgjJi^dB{Bb;;rwKkoYEN;F6h~JwAh>;S z$HpJ4ahC4U^_e)8 zufsr%JF%XFi5N)B)j;7Yp^6?Tj#diu6x%sDV%K>NS#+sHRJ`?t9bz>M%_uj(MdnjO zj@n9+LH=jNsiX)tR*|7gB3skvG^K91#VBFfnWiBEVr`V)@)+)8(TTiX)hw}i9w1yX ziM^>=t5hryN5q@FlO*mj{A=cAf0IS>I}B}|kJW-$EMLmcEiZ4j)>_?e{;|X6;r4c3 zaYQEw@&|jD_byz>bH#!D*~0GbVt(=X>b_e~=~UKgdUZ~mETw;|O=BO-PFC?v0F0{~1RLdyZm-T5&O7XnT#LtMDiytaoqdE@+(qgJQgvs8 zoi-}kF5bglF2;HP{)zk zja3aJl*4!NE1`UXdE#BzoVP-au7L=znC_Ep%ej1DdB4p|w^jD(>_+GyJNgYn%Fi;3 z)ieD~(?8%vxdXPjO$R17$68STd)&j3kLNJj+)`wl48EyqqF8NI1tC!h3k5r2pMFio zS%BE89!aW9_9=!(X-<_51i8qx93Clp)yl|FlI%#cO)-W%Wj3*rBWdp8p-9w;!MG(QLfP%1?c zN#%+;K_HkWX*Meo@m;*m_}w4(*rUTWeT+V}_m2Uv1`KiSVqWa{(l*`u()RxD?ybZJ zGPvn#N}EvSVMdir@)HC0Ib2R6z3V!QcfTFaWHv{PD~p53o?9#|QVJXGZhK(?)}*@BYOy%r z-QMl-Q6x#r zo|Uq~aGBEzE??ZZdR19g-gSKVv?-30a;c|4!`d*IoCsVfviDcn~SLbNJEIh`(J|2!<1;EZ~V8Dj} z4EI$7duO;PruAO-3X-oUaM9pXf*4daDnFAoB+vW;^FA9J?40J<`}^~e?rmCF6b9VW zX99EGSn5iK5dcvP^4)Hba9u&D2lZo_fn#mili9J8)C1!N*KwcgXxn;|xcO+8*{xVG z0A1i*vzi71%`RwWEx`5?F;%D-R7xiT1|}U3`JOTAa-{!&*@`n~2JbIp-^QK0vue@N zrIKbY8&a8=%KLLHUdEDCd^O|2eD9oNi)_<8H)ePE>$uX0;_0N6P-50)msgGIUU{?N zr8hN@@NHX&B+u)wE^KdaZqh!Ttid>^YtK(HolMW{9QAsPElh2SVthzr492D}!pO#rKn!TQZF)b=#q7oXg9DRK zx$N^ec2hfGuXC0}O&z7unwJu_z}ZH`mKBD&nc3piqktp6weNC8!{3^$1v{&j#z3~C zB-r)$qe#J?Co1A8JsKyxz@sPh!h7Cgm-1!oYQW-?I(z;86Xnme2{ZVAH>=~c_pj#X zS9-nJn|^1sBg2l!uCP1E<&9cR)pb|G*kuROO*NZ>;09LGnw>4X<&)K^W5XuLWhlp0 zj`@j@nKId@>M+8NBbvjPhOaN*gCJDVHg)bx^UTYdmis#f!98Hs#0`UdI-M@Y9sZSk z{>MCKGHlaN5?%SU=`%?9@syTCBVDgQi@W`XmUDyOF;fJ#orwe?6S zn~yx7cSIvuf4%~xk;4AJ00kNWTlTf;DQaAe$%mwZPU_dg7cJ?&xh+`?CU zjO7lsXCrDa!@9-=HYMBEN&!sfAg_(DdDKMI{n8Jn{8A-?t2G7(wK>n>AI z)037g=`u-K`5HlPKabSqv<1VpxM!c&jrhEDLD&;6aLdwhKtAv6pF8LDYPFpmClmz7 zvkb#&&&;ektEUcnO?@?)mOi$frDMwG{gJ5|7ayiu+K2onBdg!dwSZES2mx46|6hK9h@O4G^uITnfgS_$h<8PG@ z91A5@v)trH#g;*J3F$8mQb%JU%ztclB@|rO|HGm zad|Xk9rBQ{wHhB9`6zufx+v^$jR&-bi#)-JBNp1)(FPo!!yhgGj}c-Ny{4y1QbV=P zsLE3*E{Jr72ugYxg+6p0KnOBZVo@($0VTck&)81r6sFD5M$Bp?9~XLZKWkE4sTxR8 zH5-&PqI}fChQxXBXV#RRuuP#lb17+P(CMs{*sH-ig{?gv181@X_wt0aT3GZ3(B`VSe<;@z+MbI3NuxeRJ_(rHUq zX*n28y!@Aut>_51dA%T0W~OdwCaOj0^it@y+e_@~EZthYzPh=&B%0>o(&6d8?07Kn zNTzJ@_=NK*?FJ_(c2Dtkqto!=|G%;~jj}Ae$^-Ac=MLxGGu`>Vd7k6Fhz5@n$Dkp@n!5B&12_C zleq87lTDfoQWS5{yuSn~%5v;jD#X$z|tSJ&6wh*C{EIIT_t>>(w?Irn#+SlWCLJBOviiVB;#&c#MiGVZzvy<)4Pu{ z{#&PCI(_@LKYZM`@)#&l*elN z25Yj-a&P5j61g)lYJ`^q+#}lfiO8+dD5^~ATyi8ep=w$L`r_7S%)q2`#EnE`zC_$@ zY9&pen#CYtz;|9Z4Zb>r82v*T>aindMXaxjxCUi1*wD`jDlX z{%5&`-U22^P}qH1_o;|wy*kyzXA1!XVbin`#ULzw%F856YMGHoCN7GoG3_E**w!r- z=lg^jezugWV8gDY5jiCgFb;~7*~tHzY+qhf&MH@xS7pD9^1|hF>t|O_3B7)y+UYc# zFDw>%g-YcGPlVAg+<)nrXSQD0dU~p0w#9Lr*_%k;Z0?;-{IrRLnfb{nv)-5+!`$m` z9RE?{b58yrTaiWQiMz#xe^mu6#MpN=FLhdttX1M(yFlFElS_`fa*2(&09oQ5F&Run z&YN=Ao5ytw0DF-O_bOE0a9p9`jvfFCma+5aTy=>@WM?EW%|L{s6!`5Ox$D{{UPhXg z3_v@W6B81zXA=Pfgk`q6;#6!`Zjp4p+r~Pu#NUcofu*skLpAZg9CeWWmn3(e5_Wn= zxhSm6%gUQFs#VfAE}h$bV`*qTc=5$o-gqM|Par)f(B2E_7Y?1kU@Y{(e@F6r-^b7BGX$^@zGahu0akb=K)6r6 zHA+>aX~ONo02AOxh1F_n)d?VJcRWXT+PMop)r86dX!ZlB3;QDsk9{(-U3cL4|B7Ms zUGBXL#JK?RSDEg~Z6u~_W3fWyq^RaDWvCuVuqGAGel0U;=6sMvAQ|PvCYWg*CLDaN)&GxWOU6nnS zsQ!*kg>Aa~$fn>+yL0vuqyFj} zZ`2jDV%m27{wuH4FK_Se*5ziibUl6eWDdvc6V}_=xO{R+Caz!%T!;I_KWmMwC*7{q zC(#Z~@&Iz3JmQ3R0$2JBO}8YPiL+XR3NX_S5Luw^5JP~3PcecZCBW~i;%3b=Z=Ktk zrD`fbhUW)>rTETOagxVnzb4xeuUB$JfK%!Vzr@AK6LOprt7A8t5$G;}4`IWjzGdq= zG$AB7698u}rn<|-`)%one`xqUpZGF%k3L#CW*Z1V4g`dsuO5#ts9c zBwsYtB2P``Kl^G1`!NnM&h(l0>amn?+y>^Ws-t=f9kt$Oa_;lO|x`gjWTkZn_BdB z-JrIwn!WsVa#zVMYLOXw*Bv?_C$&Nu%?`H#w~Z#w1gl8>+pk`D!YJn5UoD zwDL>EK+A7?#PEfOvoAFUBOmLuvO@X65edE`VtGg~7b;$m8 zvcoK=RFewShH^|GftBslO0~Fs^!V}N&}r8<>)YE-t5>V7Icra-Ou7^6C0Aq5D$5h( zv6tPRu|~o=NlIejWLD~p>=90_AVo6}FebY1=X9E4W*FWz#p8SCm(GiqV`FOlJVaK?H_JbDS-#|S z9Q)?q3QO`;C7)~uUKck0d8rY1?ysD^9@Pq&m6gS4@vufbi9K>pCuZ7Z_Dso`|MtmB zGFY9i=1zX|RT`9qnpD!&mewqAD4diR7!ic}06G^MNElxO<(xqZsH%?Wz}1N3qhIJD zxDn5ObI)yd^QpUvhq88W4d34wHb3Vpu;EFhd^sOB@8X@>m*6$kW7zKIBclqpG9%zqOy z{WB4B%_ThX&29JexpuM9C}i60&B*two7LHve=xDh=G2Dl&wW~lAiH(oiY1~Su1*Hg z#5ezd@p4Y?ZnW&CT`j8Rj@OejG&Xf-E0o2eL0VsvXJ zix`_v7~2{S$1B~3!*H~1b~0aMu1sQ=;Xxxc(aO)OuAStYn6jwp5uI4hRNmYTWG|8A?@O1EV_FO{^mqoC+s-{}DP(s2Z;Rg!H zhqj%{xKMgifHPuuLCcdgV+2Ggol*cD0m$V7Mqoh%;(iqamT9)M!ZE74q2sGe z^?l(ibj!ETsg`aK7;04)7?unAIcjjHsHxavdKfB6wDVU<{~-`KPUb4l3az}aJlO85 z8(T{M_*~8R7o2pl7*)@o-r2c!=iI3ipRcML%5kT9?Zk;|Rp+>}Vd-~ouj%_pT1E^4 zOXG3aeZL;a`wmy)*-^SDGu4b!l6yF9+RwQ31X9L(_g+)$1+`YdkvK#_hmeWbXA;d^)M*+`IQot3m6uLsj-!Sv>s#%YoT!b}8R-Ex=sY5^|U8XB`_^ zHuY1v&{u^*`kdI*YJ|ja$eA$x=}PkQ7&C-sM|p-2wqzHMJ?3>fDeL{h9rxlBiqhL$ zscqNFu>ez_I_ja8B%wp=Kw02hOYr*)b6e;Sw0Nvm)s}C; z9g89n2OGg+tmcm7Zc1qtk~P<9+o4X6hedx{X43;qn3@UBfwl?$plFo8e_= zXUDl5-aKlSmBB`~oN%q|nSqfJn6@)cejSySCoXNaTlN5(#q43p!yTXL#B_`WQJs`6 zhbz@jF{;@z_{G;fnxfv(2J=q9dgvN{2560nmM^J^hKI7=&r$rzw3-p|-7>Vf2{5`z z+(N&WyuM60!_@a^HlY48^@|IZZhOmx>W~5P3qZ>N6>9v)EFBfO4Krom4m9n@WR;@V zTk3S4L-mAZ;6I8p|9vH^tc)`l_aq<7_MO$iVis;53&`1xJB#ob+1Mb*;NlP>@h zQ|m}c?iZ!ICq5y)!EjZ&y`+mNNQ5=Pk4x4eZieB6wjrU4n=-y?jmgiL(?W>&f&U`ph|9hM!We}Orn(jG83QA>NIjT2SBrti##6y81YgQAjH&KI&R#WpI@Gz|A}yJ z`7V|uvcHUp!3-g)UpDGttH?eVt7I4~S1htrHp@JW;}|gT#7?J!eQVQX@g51W`1ljmc~|^j zodVWV$k(qz-~RNw@}=6g89Ijha}G+!*hpK1LA~1@3R6Ko&&8B)iHEUlscFw^~7Ha z@e4dL=>{K;7+#jlCm4^$%Dyme+xAS1Gf-9l?^Acz5s?)uwhRJMnU@ zb-CmlxR8>YX+NVe1cg%tHsK}8Odb-al~+?;0e%IFpuQF%!&;->PFFK@Uu*cX1aBLT zOI4jZ8gU({=|t0$X@dn|>CCnaUpM*yT`3NnV2~{?=R8jp3XTHqrV+qpC$pH!#ai}E zOidmMD58yL#J?;wcqr$Jmh*-HbNOMv)SegmB01L%FCCJ;IJx)Z&Bf#JYh*b0M*H?Q z3QdvNj~3Y})lp@k;~!%VA+<_GO`)O}o>KW5S9=M=at!M_JbB*}4k^3~5N6g%TObMZ zdm@jRkrOd-A+yjESR!_?HDbN^da|Ed?k(vn7i2%i_IiqSnhUwwg6FLx&;#xE`qAOe z`Q@F{r;F>wr|nW&+S~QBzYY1R3B6&0EhPtRa~5;%Av zmmNqq>T0WtWiQU_OY=I{hc6@z<7&!2Dt9UI@C-eAbcG|Dwyh8oYl#K9f~*;s^-4o- zIj;$%xv~-$GTD`MQCup=HaQcY7!OlMJ~QIh{!hui#+vXA$AxrWk`D1Ni=p+s{1r;^pTaJzBi6cu+dCG3Hb@dk|dM`NRFhO}XM+T&iTH_i%O6o_KJ4 zdH8gpeMoiIV1QLkM8}cpQLshNSV;r2MalW#rT`=*JuSYkS{fDpQ#j{9(&_;dX&Eya z}3Fu*pno+{v<5E|KX zgB?^&6En_O1}JvbS_a7es9RbD6K<8Ca=2@Wm>%1z>uG5rYHU+FZsj**Nl^T%P2>ZQRWhjKB;_Ic~{oK&T8=Ji6I}H z=)Th^@tyPM;aew8z=!X=1C1oj&iO@n@rk-Us<7k_T7719X^Cwn zd&HTGV;#nd(qN6J?z}s6crps!JE8;nzOR-1$?@;XzR=m64V`6l{fl&kmW7_55GS)D zw?1+I2kwn_+LbD5rL3|jz9qi@C<&+{MCDdUl*56YVok@tQsieK|IocFzvh{#z!FAV zfES3FFd~G9Kc30tj!?_NX3*zIC%z%R>`GpARIx3WcsVQQIBF>DO$cp*!pumn(szF) z>G&!Ozn9-8kVsd=$cr+Nel2S-_*JI)fe)Pa<2O+BIK@G@ zoZ^O$(U_M;VmhwGiM^D0&N~u4U*0&q*vZvz6`c!bZryTHxg2!hfxfRLcf#Q+&uDK| z*JwUoKE)WMK6x5->W@~(lLPUnp<||>p61s*RLN?r{AiiDixi&T%orAWA*rA{^P=;-KLG(t_9p z+(M>~#RXeJNH?%$`?>j}`Phd-caWj0>01@zy^}Q@Q$%~@Z6LEIlfA(wg%2;!d)|Pj z+U>AcsMWHq&-T_V}`E3Oqi!+r|GJ4 zUwGWL?d+1OX7tC;-m13S%0Rz07~Il9{<+4bz{&5+AneP+PG;stEN=&PSB)~{GeA&& zVL0k`5JAyY9#3l;9L~~-f1>77&n1ip=_WOE=}KE|6kMCCVIG9Oi1I1|q_k|;qD&|4 zEaKk}nMn;75)uO0!mPWpl`z!8qAlm}kJxM_gbBeE`9~`&8}%q`n5{T1VlSIya#VNo znNI6S3Pi)ZDZAn#SdnE=Ps^+zzU;*!@N%h6i15Cq1+jlFwoloQ+RgG^#SZ6+**&(G8Dbru-r)j7|q12Ad_(~u6cgYNRc4Vmw9gdBT z_=iTLxrNCZgTuY>N#9>{3&e+b+@)6juF4;CRdpX=ek*OOR@iN6#b$&`Y+xChVOj=; zyPmj_-2}-MiT;ED4Rwwm}0}R(9C$XXT8~!jl`bC;6lqQxaGQhVk~Np$}FtrcXcS zhLbW_nJ~evN6^JiH^9z(YnPwg+L?6fRp>>}r6WT`L|2OTwh zlL}W(2m%H`kmTL3+SVL)d)S5CXNC!h6QnvJh?i>s^#H1&s}X$XZCE%{hBgbZ)mmv} zk&be$^$)J3I5khBB4sH<_LGjbrOFQHjIy9y65g%4%@?cl^H(<3)~;Z~h^|C4e(g#5 zpybH|nUmPkCXYUxKDs4jH8nJ2Dk5uN^YRQ3{r4(6BcJ~y@BrRYA5~q89k)75B-whhw;K;>fK*MZoa<^!jq)J!7(zE8+fv_^rG=V$ z0)^*@yQY3B5ST%@1`$CCj0sKT5*VvYjkS`-kcwA6uxZ71BpmR>m9k_O|Iwlxwh;A(uddntAY?4X)O*M@O3+9D- zR5Sjra6%ynxrS6j)30gV(JXNtb=(APgNdWXsAjq72U|G|`#k)v5V^wetK{1NDvLL} zkh*VckTc7sKUoIz+%e(v$>h$c68ZNDw-6GRs;Bg}1GA!LliuoVp;F1(sg$4f516Wb zy#}LZgX9uSSc^wJha21$8urvmzUcr@yFAs%lwN=-1`hhaOZym zlyQqVo0wX6tDtXl-M$ANVR(v%Z?QmJn;#e`V^)>_Di8@$DniSSDZ#&J*OvSJypkU) z)nKedlOP}-#We>p-rhOvOJ^6#tx8u@t|S`mW2S8F+DzT8;WhPg66p>aHb7KTSwWDnc1jZuIavC8!Rl;Y|GlHZ9HLoR%X3tx54d=`p>YZ zjvn|4kNXkTIVqLxK{D-siXXQO)er%ScQJiIqbZH(hA`v8ICaGvs-S}CNyoEKNvvpY zbBjIW1$mk`*#8bp$AgUhGn2>>F=pK_gD#(Cj4LQDfh+pkQJs`Llr^)8;)(d*%S40# z4?M}5Pm$3f>%3Pn-G8O_->EOEj=CZq?rO!2fEQ~i2(8mB*l2L?Yntb3P?`?b0e)x+ zP-J1$G+lJ{Y#Ofh0XmtFK>8@B2ID+D$%2mnM7g+6KV1h=hPozt7RUzFL@U3M#Aot8 zwUu3o^qA?Z?S;tq*V~gZz-cejxD+w90nO>(cQ~u2NoXSde>80h}c|YWG0T za151Ll3&GvucN|%n+v?Kq7|z4d@;`!uqF-^Icqsh0K!_}{Jtj6NgUD7w!jK=boWkT z7;czbj;`X?V7m;m8>R1xdDd68I>tp2f23~)!p>y!K@x@ijj$eH7S`TN`jt+~uDD8} zztuGq@A%eM&dW`UUxSI?ost(>lkDb9rEx@wDR;kH<{=BYC!J5mh~|9|r#Er1BpX!J zw@g@47%XyICZ-C$9kFx z=*Wb}vmp)D?tpV+;}iDM$+~1z#?vIGC)gx5xK>RzJ&8Ug+kC(IvW5x}7JJH*-JiNk!dveVG6K$5D#A11Tr>4eYVnC#RjWmO348%K`RMO+xy;{#S`(v1@BhqBhV~2vm8hq0O%@EXTz>R&*qc6!GXAASsw?Hn%Jp(>By0nS4{d&?V-c?qWGx8}@wWad> z?(yR_+Z1+Jsm;=RPdxnI9?^qSgUOc7m1@%LnlO#59)8~8^m)I=c{)?Q&Aj!NEp*qi zv*MO$%w*Xq5PjJJD1S4B?X*x zMr|EI6nDDBJzKQt!*gHI(k8Hh&f6NxLM+5F@=NxyO~>>cGqaMigyCM215;cWU~7eV zeVc-$urKDawg{gkT3qMmeP?5RL$D;kng5q6`59M zVO7np%zeiviF=2^$lpRnV8@F!ZMhIOEQHfg?ok(*Ph1aR$hLQJ^=&GAb=j2w8opyP9=EX$D@%8XXX_~k2)JU_yG+k4YL@9~WgpB5@4!vWe_h9SrDHIkErK~J zYy(WN*PoBKO&?RvD$go+x965lvEy26VFUTo%FF%srE*&iVp#KO=6{xmbK! zYKTwu3l}atOV7)Zl{o7L>IJ4=03w{y<)C(>23=GGInHze{Js=Y`!GrPvm!c;RW|VpU?>N8{dn|mU z#waOm6;ie#DMtAX4b-W35*YcMZfJ&OS2FAB3BDwL{E8mq803YMMvo+=v2`0rM9t_~ zA^jpit}BiNyG87&X$&lJZczAfXdBXlV|R{IAKJ*_!YX<-q@Sib-4vt{9s%EyPx%jJ4O1j5~NcVE}f z6C&Jc!S}!h+GLUMo(K~>FPUp+7!8Kg8qVGUNvJq&*h#QNa=hcy-3vPtQoL5tqtz8{ zDJ_dtX_ea0Gi@VfvV_oJGbEH?)Kf!Cw^>g0)XWcR4wK7ffNqxn4NW-+he{T+-UJK_ z>?{n`FJ>|&@o%yCl4h^1#acy3^A@5oO>Dps!sZtoaRCesy$4VuZ(9S~`Lt^i>-Pb~ z*oNdsbDEREOvm?xslmbkaZXK}3jahCW`jRbT&0wt%$4nIH!2#0AYI{KDXM>q)FR?s zoVX@z;a;lw{{5-OFOBP8`#FRUuxgHy{Q_W3?RonjV(0n|?EI-vwpRxb8v>NPjW|^K zhmYx-tLmUbVnaQWGbCMh{&%t4!Y)89@VWG23L$PRGxOs4h4mKFX}ML!$93j;2Jw=f zjK4_OvY5bDHQ{w{D0ACUR;Ro5OP{^;#Y?|)3D8UQQn=bHg`;M2nIFDCZ5KVn2g)>S zWlM|q2pguAJn>XPJPsCC_tthr%?V}bNZU5VqrIHa)V) zsc~M-%vnrwY%j~qX;mD59CI?TRl_t)cGM4jHRG@iYRO!RZS0;{!&W&T>pCh{tA<4= zGwk4QJLM7Kw+U6TwHOb|0fI#%fR1L{hEKGrh(oaI1#&r-+@FvVzUCXk9!g1#So;Rb zQ2B^*d%Kqvk=pX&hdy-W-0sch+}zUq+mG(O{PLYf=kruucw42rZ+ALx?@~Sdz=Lu) z+mrwH{b>Q>;4g`ASDq}~83vkJ7R9PH?%tbF!Ow6n%Ixgw-ZcM#s`PYp_NdBUhLTPA zi`%iUaQgOZB=XDHd;V^Uq{SUiJ_ZdT>!_*!-75@ya6PdC<;_W5Q5q zG!xE0;6)J@W}pbmDHINka||(ciAfMOJrQqsh>f=Nem$wjm6bbkZ`f8?D%F;T!`ij( zmG0tV4R~JdPE#II4VmU{ZTD$x9{cj)D~D4V<}m3h9jUH)V0qx)XsjGGGaKXJIWe9R zkWU@kkEm=Q2O)NnVbp=fJGKan5%l}-+u-B{fz9(Ezt<;m08Sm2>e9CoT4hgY)_$SI(o9U-%)?WH&;r0_5_v6%0R0nlrX89XUBXU2 zj@4#HzWfDYaUgPa*_fnTp09HM6$UXA%Mvkc}(87OiKH z>3X&;aBLI&=p2QP{z-ta`;NQ__~)C=UcEk7Gm2*rF&eozu&GPSu2#rrT+MT{1{_dp8+3Mda#b}5a@X7K+~sT6av4QAlRNW-B;7t+A$H@~Zw-e(M|Emr-bZd3`9(AHiaF>Nw>;qQ|+RNGA}3(1fqIJ zIk{bW`}LQe_v5&8_2T{e9Z$TybL!l=&i2w$2Pw++&h>98#4(eRl;ZO6kkCd{#WR8( z?%~`75semfEXg-FCdGwWKBRb*xZh{|C!@>F-ny#NuEn5AIkQ=#tY+se!qo`*-dmcF zCFxBM-xr~`4&<1ceh<1heD*YT&On@cg$dgoYPkTyyp2z5WjEmqN^f{3cXArde`#sy zB+F(T89uZf6V2Jqz}8V==Rju`hN#N?ExFvzy;swpmjNP+qnW0T9E zLq+F73<3|zbzcRC`9TOsYihT@CcNrHx#M*=c({J)(!+ceRh!L+E4S8eUBCWt@&2+v zxDQiq&SmW3lw$Ph6*hOoI6C3oPCVdvYGvG4b!Z90aAp_$hvU_1e{ ztu}RBNTmg|#FoIT6+;gUQ_m3Rh$k0ZQ0%n2YEOOBwo267#>>pRftR31Q#hsTLei)h zYfdURfK*3GfYPvKy|`n6biKe#&ot*C2ics6X+)P=Ox&Fz%fah4#Dve8>OXtt$ zEBV8jm8I$I^q84;N^d5&-Hw-}jC)k9r-;_te-I<-{Sn(1@n_DC5JX3j=LS9D#_2`NZ3D3)spNuYz@_k+Et84g(E0EJv#eSW%f&2c!qwNIE)&?|ZXT zso~>`o6kKy_xRWx|IFpfH4c~jC4ni{z$&n;+2q`TVZoX4hQS!xO&yz^GH_WLQ!IQ#L+G9p`G# z_$ssl>}Fb7+bT;^;##Rntx`Vcbk%GI8b&Uz`5;%Tt|g2>z6LQjA@=@>YGqAY711)r zBD^DBO@vYwBVO7BIL*u=M%IMoWU@_8b^u9+h_{rNw^tFR=}GG%#4yAdm9ZK?9NK&_%Bz8FkS*lCy&zsS$>(<)sOH>?wRy}+ zeI$V5Kym@L3gY|(u6|b_8m9lLW$VBKA~=4ZE^{kda1BRgEtBZ009CPVAr zPR&jbaXXhZKa6U#5(VVRx|IIu0}*Ct>%Pp$&*C+ljDiLc<3rl0(D^sY;YIHILo(bih=IGW9y@y2nT+#z9(0^?+b0hh z?1yG3B~sZhk;hsnpIFz;O*MuQ^;VE==Cb6Z3~)5hNxo-S3W1>rT8~9Svj>fr3oX^=z@?QyY2s42r#wdR#8JJ2~Hvc~1 z*GMI`yJSPzRxyJXPwni~<>1_EeRZ~!F_>_)9AKbLI>9AC+e530ofq~_+d zc1!Px2mUy5FS~J$8u8Q-*$pmjuBLpoyIv#IicRK7^oE+4A==xW zD}dH%Dkq7tZl)~rhWh}}*s~BxeL#bbkOTj5;z%**6ksAEK1_*wMan^Hg^b!{bqfe7 z43+CL-Z9iQUjAIVpeIk(jE&PY z0raFx6hBF1-`85P#beJ2?Aj6^4sm-iahHXKYJo+qp~<Q z!C};mCPMp>BjN>6HcPB(E`wo}ct?o0&a7Z#Aq{eEfL_&X&V=AThg=|I4qH}+RVO6O zxjs^$q%Qb3LUOVtO1Ux=!L;7EUA$&N*<#vqa)^|6^W5cp-Uh=QIFn_gQ1^rdU9NfE3Jv{m;qgkaxK^Rmj&$y%sQ7Bra$p{KOiLQ>{zxd3%=xAn2tDlL zEE5r`Fyjc4wB7JQsV@*G5eVmpi<+gI7+^}(ltn0&vc%R6jW7ZUAL-mT5}gA|C#kv! zSzh$d*gZ9$w}Wa`QS1}Pj@fPA5SDyk51v+wp48|^?Uo~k-odjTH8s ztBa-V{5qvL=k=L;rDVFo(O;F#wWT)0===>-y1f!~wi30QN=v+}swD%vz_>LS+?PwG zDGGqrV?jfD@j!TSBOExeA+9D0HB)?Fqm&3UNZI+MPJdIFe1@=-%+GvdY|%zYd{ap3 zk&NDV^sVk$MAI}3yK)AeknVGL?{RL?yMa^OiA^KV3itBAqof4wPHs$#GxGO|S$Vg1_KE~_q7%B@!Y z`tWL$%k}0;u2R2RDqXEBu8}^rJ4o;2{@EAQ%<}#01ErkWS3COceJ2`HAo$C?|(?hP){%!p#-E5bi8W>zc5DbIrondFWH zYnl!<#}hiEKHSyDt>XD&u}F(|gusd-h%U$#fb9HFL<>R->AdaOJ}v-m>UQgTCQ~0L*!DHn%v6mR`|%{r zYsqUiUV$U`bc?5MCWA90kTz+Y-pf$PK8XXWx5ozhvob-G~>JD!QO z4mJc^NzG!f&-CyxTo51Fg(5qgR>mDpt50qW+lx)#z9w#%@8((_D5P^OwGp`@fFWLJ zH`OGl6z&Dhi+D34?ox}mC)F3^E|r2NY@YZ|KaR3ZirL!N@VT-t_gS5xNcwdF`7%NeR|OWVGk5ocbD(EYQ)S|7 z9Ut4ENMZ=}GIh2QYBRSTF?R(M4hPQyw9vrT4hvq$f+lxNv?}Zx$J)wK5mVdLcO4dp zuq)w$8qGAwO{;RAVOhDSJh#0x2#(*ry>)NCf9u+=k;!z*y^B}h3)J`epYMOE4}yFB z-QLx!z1{x3z|_`AbheSz##4whS+DzhTu^(TW|y^1cy=b8OtS-pV6x zh7EhzY5SP>{z0p0!=sp5AN3$Nbd{EmS=l#o_6DPdL2MqG4sbm!)h?A9mC6|(WIac> zrKl0nTD!z>Z59NScrB95bvD2G*U271Gl^T934e`O?=981LV5yK)p|frM+w2+zFE#u zZdXo%OeQU+ZD7r(OyrO4U^9&z^`inlOV$HPbe5?+4rn3_K0jnCA4>VG3dH*h%={T^ z?xUa5H1zW#9A)t5GKOdUDdvVj5s&X~Y%JO`S!5O#VjD{gVJZdjJYS#gx+@D*dsI$3 z*ISDLrLp7tvCetCw79qtKdGUAWTl?6qiJTsIoUucR3?rN5wZwa!21b(_Of_=KwJko zFv@_qIYJLUUV>L7_q@#@VlWO%$BNPppAhQt-i>sxnj z-h8kV*UG9&gf^OJUj|Fj#FK5YJdOR%T}36WzGy zS*B#QCJ%JgHdw(`nVu=Dxlm&=;oBy8Qj)TXL?u2gzK*c*c&?v=3h zt5)rYenuGVf12RWUrQTY-iN|B|00>su?2#VbMjZ@6jH6zDXa5G&d!T}q5-o`H>1SD zE-j76NT(yU!zYd=Cpn!xRXLFAYV4tl(HBBXuACBLZ8U#Wi*Z7%QdODi*qWQyd`K|K zrlI7JTNPeQ7WpADgZEWl7H}dRS|~7F)~`~_BEWwvqCZ296?Z?$tklON8>G$%Ey~2! zck7z@E&64|Wu((4@fR{da~3t}^alm#|ksA5Fd>zkM^!rnfg9A* z{9ZYRhE3eO{{nWwGVwl)sL6yXspw5mF^9rTFFWrJems_IV^+N=4g_F5_t}k)n|i`k zo%`n31;+fNq_TcmAj~7%1y8M>RnVEGxi2ceBO{oqa%OJsj8fHcYheY?y5sv3IJ8Ga zI%{nvJC&!*N26AQ@&1unS*(s1EiE_XAM?pmw{(@AOh}l!2FnO<+VPsUIPy6wXlNy} z2)rgz6sV|=TfkxwpP531y6L?!`3&m+a@^Z1O3im=*=kIzT2!Ckn zr?R1${^uSP9%_T93!%72IzZ4$-D)(XRI&*x|Cg1#QcLzuZER<^y2GL0-l*^F_=QTv zPjRkk{{36G?)Y~O*`hsrG~SMr>@pZN3&?<+DTusc*_W` zPeu4A@R6!PBvYg6Jk@-({bf)jLDx12mKnySux) zHZ<ldZRN_Iw!7v{`?dxZL111>K)}+*)+R@_Nj&R#1kFN~C2F1AYV^JRHqpTyJ7hzAFI<@$y3=Kq`U*Xw2S?suD{5|m5T)+A^!smxcr*1=pZ~kWMP|X%n%v=Y2 z`=M}5LuXbn_%#7>JCR6YLWr3S8jd}CkyTl9JJaZL$_?uhObw@TwE`3PWe}z=4nBqG zdpAC>BSaKq4o~Op8z^e|ht{U% z=G?RxkGPx$ogr5cc$D3RKfhIyDU^;(vVlhs%@Hi-z9b7Z_m5$El&G9A)eeK zhA;FfsPmoEEf#ctryLc0TMH!8coTlp|Hb~}QyB4dLh3df%OLD0?fJtJQ`gY)Gp_Ia z!*#ULx?i{3-Vn^hrG4Xqeq^vm8OPSpJ-;N|x*=;K3HlrQl1HBBfkc^J1)908M&ACz zw;tG5h>eq~#qrLzH!V7^UyeC8nfv+%7q_I#hhN_c_xys_pahe$;U5)8_j1=RI;T%u zu|IbWIFaBIkvb0OR#|XW2Wl^HMNPjFU0buaRxgJ39OFX}jv?pU^vWQbws&k+N+{QA zrudviANW$$>FI3}PfU%65#-?iB3gIhSH4!(vHbg}T4S5V`?itRh-C?dV|rj0!JGSS zr`SXwa$w8&vQhfk*)>NWSF}la4x2UY(3POjjTb4HTy08)eEPh}H0ZRAjT(_T0`u2k zyZl5^4XmNhHG!VpkuBPyMiv)&6q0q~vV0>#4DW7%r~gQor)WztQq!D;hlWY*sM45{ z#^-+L&!GFca*g=LIHDYWyk@pGnBBoc*pj4hmwQWsl>S2HNZAexc zEe}(Ssu|;wCESj<#NyyFGATYHfD(6zUabF2-j2n_Qh|?_Rz!&Z>{mrSbCFB_feso> zcWpy1_dw8=SG}S_Ki=4gj)N%+oHc$bUt+h=GDTtfejBCDRXznzzm&G7J#Bmn7lo|2 z=hMQ|(8|%FgG1BN5g=ODw?$>x9Dtu<(CL0Ue}8Yb!vrww@Vs0%GgM9k0Elm8U@c5h z#?ATNP~Cb7eY-z176In+ObRn#kM$p-4HwlUgY!=q^so-If7z0rEYv@KJC{-N(|z>E zwT7K)dc&86j%W^4;s`WUS!wm9UP#_)((TutsnC;Y`69xXKZn55turUnc>P}K+nF_% zdSrr_DZ!sWVJy^h1zl06e$JV=zbE?@YWH{3|8<*S`p=^;B zQQe*HP4MbRjY&2w8E2t%3aBA;;w*_f|0ore#({RL)c5o53G}_~;SJdJa6#<#a)$%Z zs{;uATKo3f+1&B47y7CHV;rj&<{0%yN+M2g%0_;6qS~f5-_DB zdYu+B2;%nK@U&9!KAx2`k^L0YfyQL)gjm85GV!vO<-_P394Xcpixd{LAhkd$w_>|;CyJ7ONcb?BKzct;46jqV?<`6S~Y z_Btdb^wZ4*k)Ys1!agSBrXL2BP}&*Saf&~({)YGMO!2~?2dFOy{~ae&;;b`sMI_yk zDw5j{eMq zbtp3$>{Xj0%g}|9^y}(I2%K&@H0oPHBWl5jB_v1qSJY0wJ@Llrz~1=GfUi_lzZ@Dg zP?paFcV~&^>1-ZY{(A#CV2S>Y&H~?zMS_hnOkUb>mAJR zVE*Q!pP>`z-l?>1&mPDiCQ# zpmW`GL;e=XDiPfhxWc!>su%OS=DFax=Ud~i0kMhr(4!mt32(vbBkUk$_V!}OO}on) zfjHk*eo+2j>HMFz{@?0cOj=yk%f;2qPTJnwfrO3ozk2(uRdbM(7MC}2{Qs-`(?B#y zxVX6ftI&VO;%w#U>flVm#{OTb|78!K8D+>vvQIE#EcxJ%&aUdT}e1OKUw^*<-3wF zva$YKo~@CE%fD6q$8tqQ9Xv^N896w(|J%&U%*_0sF+cs{-zp`H?5u3PNNE1!RV1Ho zMe-lNqWzy%E89;QuyOoXLjU?J7}Rum{_CjvY5A@umLvcL2WLAY+y9QI`CqQN zK6wC0yBgVAnTXh1*qVI~50E$V{O=0?!y!Q4%Ejf=W&d0CAGN7|s#$}C^Pi{w$8G;j z^1rDOp!Gi@Vdvod-vs)P_5TO%%EHC+Pm=$2UKSD#W)4pF|Fi#Ibin(nEj$Um=Cn=7 zQH{vmhbD|uuw^nN$0nflCdp|8p>d*PQeZT~?P6#Q#10U0{i?=iYNoF@%V>sLS833x z{8F!8(HI=u#$dP5h|mIj$nl{L1v3uldf)muy6GIb>X=$tI^sX#8S6kJC&RBM%giB+ zK5~;{TXX(Fg-RWj9q?Wi&8HHOtQLXx0kM9h&uxJn{X7Ks^JbF*ug&58Nfw~+^wgLs z&VYL_aC0=3ja7!^O=$E1WH#COz=b)o37nJjwinn3e>aUbV03FrbE zQ_pZ0*Q!rwcg}a*?gebgvU@-#a^!oiFr*n$&rIZxyT&{(W*JkyKWuOQg;DtMUSX5< zZ+;(Upw`AAuR{J#29}o=ljqGlCoQD+(Xk<2>H{=9A6TcnH$Jh$`vy#uz~HI)QA)aW z=X4`YDP8$J#7l}cCbnK%TU;cJ1~%hI(t4F$F|7*p28~l|qRMusR!f*OS|`js#`MWm z`nDiSGd2x4YhaayP`1~1P0-gl-$tDi)F3TA{E*4Yw1+S-d*HYkimr4+ z^;?PaP)FaUDPg_tCO9BjqN726K=EV~83E?r3M^<_zR;e=GXLD1i(7=hWmhi63`|c< zuLXE!79+elbQ=bBn6C^H!5Y+bl4OyimLwKbf}tuJuEy~ylEQqTpFXfB^~pS=&)X0u zl#f%wo*NeABri}`#H=E%C~|cJA$YrEUYDEGZukA@E&BNcRynQ~-JI2t_lU8_&}Ag@ z)hqj^Gu~*uiE{WhQp%uu;9stb^yc0nIh<$C(?`8H3 z#R&AoTll(uB%y?}gn|eFc0)%pvA+aLR*Mo!klra?R+r=e1A0Osn0A@#dzB%oDaR zL_BlnJJETl<`sAukC!_6BdW4c#e!ZQGvMYnLEn8rEWH)GWekEEJb-(Z7}ZVe4)#dr zMDyf(l2L#3+zQhUk42{wNS@2vhC4e*GM5%}9> z!QLCsF0;h8tW8*8luxA;grd42|BQ1=b%FqC$146m(nD8o6rp zuHpx4azxmgIz^UNtHrX7qS_o0s4kqhFm+kaWU8OW#+>(~6P!s6;_DeWon|X3CI(HQ z`)KeB?kb?$1(6otiZ~JCmhKZm`#yCn^g6P=*n<=RmM3VbN-W45ex%SX8yx<02Q}{i zN-D_7Ctcd)I)SAU_^vd%=K`5NegMqkgc+5C%1y@hd8F$ExBHcxAFs$#PtmB$%max2!i8P{#yoRMlKahAh;sZf7 zP8j7(6W)tk^D{O5bUH2cGi$YIm%Q^v7o>^gwesMhRIz;}P1W#ci*d8`(+F{I-%f}F z`}S8IK6MxEf;_tOBgNe#c7v1`eS;mcFTZ=YRDY&sIt-(m_XItc{Dr_X$; zXdo3F45NX}ckonX*)e3(c_DYoSqM6{|#U77f>UKr0;CIlc*W{ z`u)efYd6pV?uPquo339z;;B}RUP!)gf#bJDkftH@2J$Q7^|@=&t4*u2%j^QbP@>>a zi8n&R_}t$0b8tFG3})IB%WyhoYSX19kI$HAFeuWQL?1mqf_BNHDEA%06t~{uuPde< z1g8{`+@4Fn$9}1)FcJURNY1d$8M+N61Bzx8%azy?{5ZXvuUnwor5n5i$<7JWEyUeg zi`!8Opu|>o6#(T)^vHa^gu|bY+42wus_3k))n_b3K%q6<8g$Zod?{CJ`O4a;wKYfz zi0}ogw~W!H-+vo&%n$c`JGVyJDEvfq1AR$SR4*lle2;pmH`y+mzb*?tv-I_UcPM#K zCEX}?kR-;5yx$TI3yu(^mj8Rqx9sA|xmFYa*b>8wFe(%IDFEziH@(MPuf@E4dq!<% zjcM`<@W_yK3cYxHxl?m5ZYu!v`l5xGghCLEM!=!oHtA|A2a4_Srvh-wil^U=euuyD`gj-7D+3`c3ck=_9*VqKZLzH7m%X%wnTm*1wv#Z8e-4m0$} z@-swhJuI&o)lyLl)7YIwjZk=nR?`OgJ(Tf;-*4svAMtN`9*58Lg^ zVMmFAf7M6Jyo7(k4-5SImeJH>6G7rbaPIV`dz^O0{rF|_0MZ=R^fLOK=S_F| z;&+)5Q(f3m{cl?Vg+U^rvNz&}k2072kM9b(mc}ANp&M)Rw+{f;#F3c*rgufBUo9^I z{OS3oahH6G9}X8gUV=!vl&Owd5Hud!o*ngFM2>VX6}Rgj^P7giW0S4kYx4KrO+x_u z+RGmI$DY^Jv;~Y&d)SP_`de8yceOIp{09M1?GEcL{t$Y{-bB3(eFaK6s_H%WfpFYD z1Q$eC$oN&DvEUp4-0lxismfVxIh6aj3$NjjbLMjIn=s~bvew3Xa;1oXW}kf!!=X{O ze0@$-{>u&H(o~rL4^B)o!-&qu@TkBOR?zCS>a#uS6S1Ig2tD@6i`4Pjev0GVA61?Yd)p zUeG7&=j59kgn?iRV=8dyc7lsw3dH)f!2bsoYtup~(Vp$Jyyj;>EYCZyOU(y};w2Z^ z@BS!0^XvsUCq{gd;4Ll?(}L&H*b3%HUj*p&xqZ8>ax~Z;sZ}gR40FRIQEfqdbx!Xw z`C<4Oo!oAkGk{fza4h-@ChE($7-+BE_Sx4AeAkJeev)MG3*dVWkUitbUD_8_#TvuM zfEYr+S5fOpIAJDF!c|LFWG%F5Klpf^Ufc@7tVEho z9_F*0OS@6HF0=p*nt}=W#sVx{SpcJ?Y7l!o*|KQLh1Wg{%7L)p-(-6rYJaAkXim#D z8~=e^YX`CQ3#1bd<0)#hOV$E$=}W-G%97{~ zXUbQ8keBZL(9cMQvfyR1bIhD3ED|gVB@$w3Qcm3h;o5>UrZT*ULB{;iPV4kI$6h5l zhjb3pmV&Tahr%A)E+VM%!Q+$%q%uG@NrvP#W((lJIu9o3(rmbvG1qknm6G;?Y08P28p%>4*=SR6u^deMnRsQH4u3WIH( zd9Z&LjZ988dLMP!lnZ;sON3W2=2B^!cfX;GDsifY+Y!euq|Is72Z(Y5f7eh7NKX%X z6G7*(J;B&)^!b112h?e~xDeV=n7$btZ%yaUYm(*z2YhvcT3T{clqFDm7i>@qI?neS z#=lrRBQMq}p&l2Uwz2C};5=CLS~TrFJ|(-u-EGNlUaf8zOB(7+e<{`5I^IBi{BjqN zsIX^Y{i;XbPCVTPKvM|G7h)>>a~u-zuw>Kgtp+rRX^}*mB-bMr;evnbw>v~H9XiE7 znq%fP zJvjgMVWuwZQ*>244E-EtBlC?Ar;{g zyfE_C4lgV#y3&VTuPfIl9|b{uJPd|Jh)zS>lHYOT9RuB7oTRqV&LF_w>>#yd5suq< z3TiPUS`WA>9BBqShW5T26+3GIBn<)&*dTWm`r?K80&lC+`j~*8yvQk81A^t(6yu_E+?)VCg3vvK{e*!F8$C z{DcRwZinxO9!y+OZ?G8GNSi!R=UgXC-I_aXAqe#h2Z@_kWRp(5%;AUdp)dW-0hl&D zNX9L2cCUo-Wrk*8tlQ!jeJ^Gly<%+(m*9u0MHN1N#Z+QlESJj)C}VT82i|x96 zlipJ64U8K8Vi%>I58)Lr0_2NxuS5)89#+GA{txV8!=W8CQ@9z~;QMZ2kxg=XW~cs% zfk@)n4?+3Ih%IQ(xL`MM`w`d+K;}EUcq>?M(QqG!mCfT0@)L6P4X~@164l?6^e_Qi zupQ_LTi^wNA1*m$GRlIVz+C&jTYOvt#_|G8NU2+FsRJ9@CRH)TRQ|OR>(x6R&dmzE z=vMq@N~)819)7xiu)PqRN|VLbyPiVT5>XZRkX4!uDDn}TG^JDD%DE(Aw^{#Sc_Q=P zQd`Dn8~G#B1a3YfPTK?ufloJ?0bYe54~#GZIpA(EDnuoZjzia6r}^aH_!mR1cWqVU zw~S9OWaV=O6{@0f+)zx{ z4XRj93#U54Ha+FGsux8&{p9)bN3xB{Xk6mSEg%GJljh@2Y6tR4PV8ydunsK ztOojG!7SC@J3n8aBj#b-^|ER4$dI3J-Cv@_8zX&g&%Z&2GDF36Q_;cPW4E-4Ie zsg7UsqXb^*{tRtcjiz!B$4iL4|8^sIE>ekYp>9bqUhx*Ag1>3|ii{|a%kdd7CHlTz z?I8Zhe&Q}>Fk*r06K+eo%EC~&iNmg~V>C({10RGRB=en@m|TFWzxAA_zAt*`4Ov;D z(*vFUo}!-z=5+VaB%uq^g-##-CID?2x_vgnAFH%%7Jh=80O)f202Jt2p}KqkHR!T* zEv>a3B5Xx>%2olWZndM~2)EX4@=2a6MAs9sj-KC^pk5hZU5>78{EIT}#0Q z1of%w@U>wiIImZ_ zKQ~Yw6n|@+1{>6WTc6luIQfaf?bKst>iV}3kqELl&n5(S z|1`69-2q@XtkrK$SnsES?HMd~6f(Y_S2F1Z=YHOmZYntbJU_SB?( zykpUL75)cRO%jx@fH#k0`UrGXwH6}(rk;1~#Xiko2ZMnYP@xw`1{|Zev`Z?*n$z8bv5tV_=)2JQ7 z_*a7HUfKNJFZ%vpSVPiNBc8@-$ZK(GC$XVxD7vlJ4KTgrk2(Q@ctFZ*|(-d-Kmu1UwvFRHz%h>3+MGVnc4nuN{}<*<=|l z?oZ~>^FOd9%flXI98pai;@bwG5FNSKy_$FQn&CWM|0SPrTuFV{_OIA13bGCef8wdP zpqN#J9Gw0dP4*nMwGf|1G(>R4?FQy145?&hOrZompJ9&k8?GEy0TO~r0-QWh$6iB2 zHSrFsijh-z^PHiR)Qy?3ldKiAs%vMV9#o8LfsPHca~kAv!~S$L;Mk1OF!PCRaaiN z_KpLH_tXw}gA_c^bF-+9$KsD2=u)5gMnj(6$291aQB@)bAhX2H?#+bO!Fb|ZM1_!A z+R?Ontv;OJ=lPC=8a7|!vOt>SRzPEdji?4AaIb#R0xPCF8UPKcF-J7>$wDMI9$#xz;&QJ=O5@l zG6ud-vP-{nExw!Wt5cn{je7(pF&{mpoP`n{sW|_}_JTcY9(W!S-D2CUoY=mR3zfr> zSiT!N=lfy1r3(L871tF%9W6ldXQ%?o677D-DuF#yBJl9u3EyN^FFAYzfOdNy^;}fHLAjz$;mRr{yQm-fec3T52d;UuZcX@>cvkhM zFgbInq}DsagQ8W^Gv9cb*^Bd#Yoo@RsNOYwLS?NTzep~> zJg<$if~=c_9|U22JM+xxQAMXZ(f;C@BK-wwVZQ26mE~5#`qEL3$&b z+EU76UNaSx{7#p4xqT5H8fEMk9+Ev$h1pG^ovD}dBHTffXbBo+ZX8Wff89XKqO_Ry zGztLoWlo~95})hA3>DmD@Do!Qqg0zJq*MuIOd74)f*@AOWQ5tXUDK#j$x71ma&mgvH$C=H*@S ziDbN}D8O$D!T~H)OV#AA&oOo_y2c)#1A%s0J{}^srSES&r890j99|zjHbd310pGCB z5r4r=;lJ|h?kg8|{ai0Hbl8$HeS;pv5VFw?bqj3CQv!-*sgj^>{Y*SHHnF4pO}OWa zX{Rv-rijs?HQ|^3V~BYRrd;kF=h1_dQi`5-Or~lE^mV|6gh+dF+L$fZo*L zd*Fz&;*u(k}51mC43 zDz9w8XC(IC@=w2tLcd1}ra$Ud*5ZqxKkGI#ZIi`tS7=^-xR+oq$c|~W=@QdMqs)zq z=fYImsQo* zNqWsPZvSZ(gSE#dQl$uqg4x$i*e$VK%1OaPWBu=g2j(a)Rh;2Nwi(9j?2a^bmIw*K zPB=*M-wKpjI?1m!-%)r!YQRA?SXoXWwoL?Hn#$2oaYY-ig^TrXM=c$`5Cef{dm^o`-`dU zOg|xSo|ZT3PAKl^s$!{5iEY}@4prVlt~w(Q*pEg0v%vIAq0XK$j^!vvoe^$@=rwd` zB@=_Lc%ns;NpM{DOHv~Ks1Fvd$G&&y-a4f&r#I{6L@4$z-|3n;ZO)SjLHm0`?0KV} zURlsdX#eeBk;&X%kT7E%HSeu5O!D*ypnn}_cFbo0U|;N|cYQfBJOT1j!USOE^osM8Jz((-P8hiRGk`9-dY_8&uN;A_Qp;UYAV)4HD zctNwKX*q^)%=wvDclz7u)VF~BtA}mI++C(QaW~q_h5DN?s-DCx~ zXMXhOf12DU12L3UTRx6aA0-^F^N*hdcj%)#9_kZqo$CDhiT9YMd%zw1X$Q0y|9O|? zeyV{-36Vxu`oqvJWhf<*jauLwc0pbxE$Ue&Jf31Q(9ie{a8F)_3k1EUxIpkgw`z{g za99L%oKv?uc#U`Rx>8grd3Um1ZWD-1-Q_ssrS^kiLrUt9)`o*#RGH&NzpC8~d%FZ& z6Fe~!{;n>>L+LD=1}Y37U75r!2fRYOO?JVvK<_>CI>B)Bw3{PrC4-ws1F64EYn7n6 z^tM?xA$1a05@UPVbIp3AkQ&;vxINqL616x@g#xP`z6shW0hw+e;4*NGHudA~) zhdwqhe=Q^DrJE%(s?%XtPo$K1y2}ga^q5}4R`bncF+phFU_(Tyd*-f(-f*<$=9HV> zpbBn@N5&N%zV|1Elo%FvkUDgY|EUc9bm<+>*W59=cWFFF&DH0tnp-wNxDFVX?`>De zDEdA*EDYu02YTi8NN8v|3qc+`s;zdY6m!-+M{mem^+Jb!s;BHlDIzTWo>XRnDErH_ zmxOX5ewi$h10f6n1vI|^tIF@z4kf}<>A$$XT|6>z=T?D>%Lx4>qQN)B#wV4RRnP|r zR;nJRDqr|as*e8vVSwM-(?Qwga}lerkhO6bpL3SUXCvXFl(*1(^W&O)tM&UVE!2)hYeeNjF%#JiMvbhNH$p8<=Y3*%U0?LXi*%-8%vH^34u+ z>pE(3t<+PiOm!|#S^nzWzdzY1w-tC6%SZyE*#<3_8D~)D&~O))m}{35GsGS3t#fAA z{>G#avtc8lyG}V3QA`lcTX6@B<15%4AxSd7HZb=iOn!@JfLpa*TjZ5=^dJ%{H|G(! zY}mr!?ymbdGtoECWYS5y(cP7pr0%GK`S{Iq`~Z6c;*Qp`o++a-`Ml%6+6MrWE+1UE zH%Kf6vqBql7g&G7P2?x`@I8jtfK7x`Hd{N_8F|c|&!a&{y)uea#J;#j_+d3T++b(E#;G7MX#R)_ zyknE^XD``NiPdlfvc==_2c5sx;CoB+q=e&J>NMN2{07MtW?EZ^Exj#>(n% zT+H-_7Ed`mV`%WA;VsS~^y>tX3c2DaH_zVtTa!naHDWwXvbD z^;W%3z`o4lLW4(l(qK(_3;S}0$!`t0q9+_*S1Izz7OGkOXBH!o`^G*axckP*Ty_(0 zY<7ocqBTMzF0dX=Ps>Z z;kj&~I%z6u68T0+}v^x37N^9~`|g~cbo*pkD!VdM=Gr{guK zX1{>&uv0n0{g=6*dD#hnH407>ZkY#qY?YKBXt_tLQR4fP-pVR1bA~jQG}KMvo}ncszH+WJyB=btoYx%YE9`1&Q-pny;E|}B%;`-M1N2Vr6FD;v z>L2vwPI~TB5udpBr$YV81$7N<{uUSULUe<~SR~z=l@S)bnkWn=kV)fFt?9)=evKa7BdZ1Ymdslw>kl`38CS6uo>FsPlWOPLAv$sc!U2g!NtXM;rS3cP z0}O?~fz?WDmNEV^)psji53_bJ)YhXRFM1hZBk3X(6&(h`dtp)bIz+T*VF+`L+K9r} zTv{9iM19}7R!i6l+5W1)Tl7=5wbE{SvzrvOHM1Ll)8aRGf^Q(YAowIf2SdSrYLIac zLiHMj{mvU`&l_07^Y2h00Gmr{Cl-7`FO_;v;N3^HByVuuvO`PgtT~!T;Z5N@MrO(wpXxaG(2hgkR!@K37nYN zu=$m`orO3OKsp!h7*)F{tZs`S$=SfdS0xhBmsfP&ohJX+fwQY2PirZ`o@x1UOp<~H zLvuil9+|b8s9iS<2^`Jw9tIRZggAYgXlFMeqOi433fA=Yf|(aecz#%{9HAN76MY%7 zyte^4VcQ^vVD(B5R!Zs*oI7a3dXCdFYfQzo;x82Yfs$MGEjXSVWS)rdPj$~4OscZ0lR=lV-?fK+z0eMKlHdY0Z(ifzU?5_54LsQe^Q;zhYVqh?f|dd zzx~|O?X^M*SUcI+OAX$%ubtNy5M8B|X+bPm|958bh-~*D)z1J!m3hg7dm!rVpziI6 za9npKYx*}K?f;r^)`wKFrHEHrC;p4Yu9whn{DePIhKlOlVZDdDq{VlhFvV?rbvG35g_`Fw$JZ-$i&;VN%Dd4%ZeRAltyTZH?Ok>Fnp)O4>x-_|NqVXJBwyTs_>N z&6N#O+AP^fX2kh{IHhF#m7!L3aC^rMu-EJ4a)h4t$FW?h8J^rYXmPbt9(x|?{ag!x zpfgJFHu1>F>17j>sz3U(jnlzen(4QuG(+&SRtad-3rB;NxSu z3&zV8S&QDYaPQ>I=Lg5j*I0|pO(oBy}4COk!A`KBvvkfy#J!)!#nIzc(0P+z~dG77P49h(YCxLdhtN& zbx(P4Wx8UqpUfHL9+vg%^UVpl$32DmUj}Xy_#xRIf80^Ao#nm4c7lWT1fvoburJ}{|~DT;_3*Hl*9k!q5E zyz9u^s?yH1EiE1*QZ2H-SsM{j~+ICbpR$~RD1`BOqT%?}E5UZ$P<#*v)8KKO^) zX_2n54YRJBTP!hr|na$MsAqRKCzrr3{Jjhb_Tx)32FTS!N{u!nhf8;8S^oOfH z-eV*4$YW#YY}c$AE2#Fsi=?pfMx%N0QKKy_2rG?KAE@)W-T!o$XU)wXWr}8`fy5!o zMv%@KWp~_0Xo!Oz$f>EDNprp8wWeQ|9?8qz7>yTO{e{S6wX7LW3Bps&2{q+A#V3Y| zGU8a?fgO}xNux{KSq$iiV!YoL>o>QOrPpWFjaj4FuM!v+g+|J;BqQmjeqEDl1)F+~ zSv;c#9ga%l)GDnr>1+Mxyukbb3_$}-!|a@DDCj_~P5pv!n&w$yelX>iMb4B2qHd%G5+v$5dFB^Ys)>_%1Fz#lKU& zybUeS1~+l#Z4#_!EMhS1zz9^Auw;xiwKmEeNgpjP*`;DT&(5}|PNYv(=J#%_ytZOP z;nM~ym(-*6lt*GhC7UZzqQX4j`UU@CbgWrZ(YAuh8g9H2{>qN|t>8qWV6`)7A785) zPK|zx1Y*O&G$X>9qz{Z5t~5{5i>#0Tjvt*N6LxL)hP1?;81-*Se*~DWFJ-R}NEt}b z_wxCuqqf-t$3*gN%vZw7WtiIeN}305@1yIHtM)JeEz&K{z+Z%I>!Wct9I<`e+Ly5)sJ?( zviaYG(i6H>YI7=leFeEm0uV(dj2uNJR5L5ewBeJ(G5ho?O|<<))NNgqUr#FFCBWA! z3t9`Ze2k=AYArjF?Yt=sSy;*4@O{>AoqKr(KQmn>pW)2!Y+<}I>bD{VSng5E#xyE$ z@~1tYg$Y40gjrQQib-Ygq`_&<1<*3`Js&;b8(BqmHG0Xas``O~Th(Ylxq1)xO$?-6 zTf@^p>itL^L^B~}niqFQr(-_(e0IMz3J*la0P5e8mQNegR~`^P1qWqg8>xKs4{D-xXzzAFal*{20sEc7b%7Im4uQ;s#)Yusy@A77AnZJez zImlO~OMFNFjr!Pbk>jtWFO`?)awp(SAl|qX_>}%lQ)J~O$G!}wB6TzHQfmsKBJ)d{ z94*=<*8C4DIWjC&TNL&oi7avWgopg!G^=uA$FhsUl`JBP#Xbf23f;yXS^g6E%T~`g z^;z%3*wa+~{yESz*@JZ~&-Phz$+s2>urpGvA(!Se8NUbX;0|Ym#1UkVbyg*SNeXi( z3T}`pnc}L)5O26yA`X8}&KdleV@nW^5n7Xp3XZIZ+v42le{D*bv1enmAx4|j(BC21D%A=hdsueRMZ+^H;@AAn zY86_-Q(YKazC?T+e@paS8N~6&qlA86;STRjC8g=dVG*|G40(NOrx{({A1Umqbz2&G z$q6R2jdOBZd63iu$kwaQyQovNE0VRFzM37CWvYb!#M(RDeR}8?>%t-gtqzW*a+$&% zGi|h1if^Co02g#2Biy3DQruolpkXqf?!9@s5~6W*@qY+ zM9PXCKO)8aue&?0?vQ^Ek#YRrvK1R!>X%?b(~q>I68w^U*(sT>RCg)919l$8nq*-5 zmKtlyLn<*tU0m^9`?8Bt)0w|td8a~`v*l`GP28_LoNF-}!gjt>M{H5IDIFqr>iru-AQX3zG=SB(f5@S5UFh zEVos7y~MK)FN5STQHxHeR;QT1?z@3@VcK?+w4aPX@kO1f_7;Ep`*4K7d|koOecqin zuBS5O(SXr-stU5FJ%P6u6JxIf3u9UIv_yKr01*7hwiHc3wyTJ1=AQ2u@;RCY@ZlGf z_ZS|hgql2^Pgl2Vk<#&1Ko#+GgWk<_(;!f#Fdi;(ge?uH#&H zKC&31LWdWbBa0%JvSF7?HH*AD%|0QoABZ~JHVZpDH2d&ZH7-%#xls?0Pi{zEn;HU2 z2IcR2e92d-j#0*@tEF`)JT#gAb1LT+=NE2AQ}nkc^N{>3rRR0QT8+)YNtLK#H@WmyB_K|52?&37YNfQ(!SI)ja&U{5 zn#ahL?1Mq0!n@XcNqx9f1?FZE>A+_3(XsqpyiD*jPX`t9u3?IWP`ZUQ;CoB%c=!l; zYGo=HshdVY4ytq;CE~{>{|iC~OY-D*+FK7ZJVNmopwiM$dHiD36{-_;hJ0Ns903La zS*`UsevP=Spl1Y}wuR>Qp(V$<;#?4*9X}DqZ@l zs~PHZ`|4}1cdv3S6@HEk-L>-g0d zSFR1wwSB13B;rI3>DE`i0r{p`A}@aD4g!!BGyON2qdAEAzUqM08)g;m^zb=H&TRQI z-p80i*EipkSLNZKfr4UPvUbXEx3HXfl+)1(1|yaOYwEgF{-M4YdsmQnef9;Dc`fs? zUX+<;e=r>9{M}kw6*kHRD>@78m%^t9zBZiAL=(?(WpJ$9qO9)9K2v*s;x14V@0H<| zd=23_=dbwYpJ%;7avF#<9<*K~f-fhj$Rt8%b1V^4CdnM}8ic|^tH@S(zvlh$x7A6?BKmDx*v?9fj zT1HwO0QwU{5I#du1uqqlMaQhVIN~r%y+3fS6TRnHzQ$$y>>&w1iY=xeo#0hWP}uxgUfyIIqBhPH9uG?BPYHFZUkt-}dtrVvn0( znFGO*zJo!2?FNJS|EBmcMe?Ud{PcUO6cyqEKkc7%4%u{DUsC?yaiK%_{KDoBxlfKnWkUWX=4 zsS*T65Q0b(-bLSg1Nfblm38vJ`|PvNIeV|WlHB!E{+n8T^0?V%=vzJHvQg?ndg<#G zeL|j?%&?wxpr4SqQn4AxziKHh^$k;fL*2zO>Fel@Jrf;{>9 zyHG=KT}?>fBrV__`sRt91;^(F96IS{w{$H-MM=cdxx=aqyT!~$Q4$A5O>&##xVT)6NIGpghWfP8L<3sxFgKpNmpci0 z8~FKw{~5!|FyJA-={@Z>sc?^`<_44+MN+dZ!nZ*i{Qf@EBd0t?;iGa*drL*6MI}1w zVs!N*Rc4;jS!2yvN=>5~CuLGc-79Gc!6dIyXAqM|-GV zsW_2x^np)ZMz?4ChGPb%>y5i93*zkXxL&Jy*28u4Xo2^ty^(3*`QZ@;1=qHF1Z;Y& zJzTvXjR!tw@ccz^a|~`gciAK~r1kyV?uYN1%AS=pPMtxt0j$A#MTI;?>DV6bsW|R9 zZlLWRhb&RkDih0ZZK_^a2p@frD&M}+pB5Eae>Z=2ElM!RS8Yp-9Nc4k-zp$m)F)HL zB#tG0Yb({I(;TrAX_kkOZC5AO0#jklOYJ`SR#p*Rt3xQ8&hta(f>^_Qo^J|@Yuf7Y z6bc!~UcKqCh~cN5>U7~G*~uFEifyo+xkYrlWRg3&)On7I>93~**@E@5D)RcM-@Bqz;i=9 z$Zcfo$%vw!4%;uTsy8;{(?aU_Emez#5RO_d78W}v&o5L3e%O9eq3%x)&ATo`DmFM9 zFPNk7H~%w_=8Zfa|43F?u0qQB-Q?(T&XuOw_j={dOX6{)JfmWD=Ye3@xwo@Xg}yO# zyCdltOL4?D#kjDYQ>a~==m6Kk#x=)H_nh%S-%`clW{UW$ww0Wkb(rnP3a_i}uI-|y z^2WKov{%_R`RR^Mr5ldZH(WQ#g?zXZ9%9-j$8>`r#eOt3c4pZ$T{%$&VYK*$F*|8P zW|&w>h%)(`ll{W^>G2Z^y7^P^``1a*K9GvgV_f*Z=!JKzOsV*%&QIZ04Y+&Lt8-^U z<_y`Un|_xEUi4F@&fY5fpda#Ne7vE$>~r-S3}n$pPT6}`WL64VV9jeT$BpmaP(FG^ zR{pv@iPv7-=_gA^h9~@mbS(|@@>A$t@&(0~BUd`z6>s_)ZRJ$os>r{!-Xf7gjejrG zC6}sPQRAV*7^f)O)U(uXPIW7dE7xYay?R>^AOFbUi{0nS*qsXs;}Y{*@qs?7IhT)A zi%mR-%`ZPLGU*nRDJ`9`(DTdH*DYpBL2PJT*>qRqB(;lJy%-9W9KMsxcCRe0bh9Kf zs(fT4Y=>D|R~ERrd`b*M@VTAEkQz>s6Q7M>iMq&!9@3IHCfvZnv)nC*q~3T>puG3s@{ccRSYO-i8m+^A87%(SdjcKP7*M8aMLD(5-rChkE&ov1 zfwEJY!A!>T#Km^f&hEH~yi6CKQw8s)F#e|S*y|u_sxMY^b~~Suo@}QQk}XfG zqK|m6l~Kwf_1Gw$$&!z!L;M-r>+F@3o>hiZ!s$1vAVUVwSdDSeW z9j|a%Z7f1m{p!}pr!Rz*WrI7HMlTmF^EP!GB|fMT8KdwlC$1K(26ou=+N=~mwmq?X zf0u`+6bQ9vnc~*VYyG%#H;K1Z7FH5p60rl!GmhG%nHv!-QaZbb|8z|#Dk@NkwbaD% zwg&(MyhM{~%RplGJE~M2Eqcs=J)1z4P!LkT?N7uHF??y-4?G2Q$kJIFm?ZNg80@5j zOw!`j<6c-kDylP9(lM}5Be*f=wzEjRp-O5;5(P{C(_+VCAy>3$Yn^X(3thJU^W+W z+94P50j5>V_?{4I@26`9_ibW6RLp%YyVxn1hOTpN?7G`WcB$DYVoobOYUI?Uv-Yuq zVOXLD^Y}W?@x*SMB7Spuf|<7(7gkaDB|};uJbscdYs2M>MenMna1chg1Z#q~${!KZ zjbrsYrFY7FfE$sX`)fJTv`)4yX|7`shtz(_C!YgEGG1g>XP;z(CJp~~C0DYK?t=+X zy;EBpr7-vP&of5k!Gxvdr)F9??|mC7NwHjK&+=e>G$L9_F>D00D~-qIjbx+Qq7+DM z{Y*Tf*Q5n+Yx{Bv?l7qWwf@=FpKdh8FNWjEC^~tROA8DZKmaBK`FXTUd znq@4*Zbn^>^cIoUh)vGWF*eQ?bG-E^Bh>MejW9nBsVHfKdUP#}W@X~*x7Ov7q~b%3 zk>V+L4A(G`;_9bTO_EbhA@x6-r#Qr>o~ucpgE# zStsg7h;b+AUGmLQ-f0n)#4RmiMShZcv_O0UbEJfB@2-#U1M?pwYsM)IFF5oo{b9$Kpeg0Wr}Sv!9zZal`-+t2DFV(=_anI_r(!EEVg7= zLLgm=?jW5xoo}W!rnVkYZ+j=<4wczLI?maRe>-$7LUW-(x?28HC1eaD81s4|lHuRG zVa#~!m=GVJ6!b?b0GpnkhWD;?T+|y}Pwa){!lR_4WB&U(DH(lI4*X~UifB0fjjtoO zlc7QH`s2t?E0c4Ljw{Jot)7~KaM4J?I#@kRA2!i6`wBbrO6Fw*_J;jOM4nL%T(O#B zEBGK~-k_a7%~txnZ$taW?uss+SQKzye)8=t!soYKa~^jjXzoXs`gWPwzF0H=Kj@Zy zNE}UfACOrB0!#Fr2q1#zJCFtV2I3I{zGFl{M#&ys2Lz~mr}KQLc^G4f_Fn&RJN5y9 z_J|{1LLdnUgnfWmpKr7lb#);{BOh-UCpYlYf9NFNJO~{?_h@24#)v!dAGiDPD&O7O z?1QiTg9`a)fWN1`0|zTa2!;gT|JQ_+5C{;8vUde+AUgyG0SE6jA-Df&0073aU)$?L z!5!JJ?TtkrvI8|Z0B*p3JFt&H9I^v7Bn)-P4gk=|A2b*gq{bZd2f$E}!*c*|7>HLn zWCvF|93N-^fb5!sc1maz3f$ej_TN2#fS8xPqd%wtQ0U<~Kzt7JM>_=ShxIBUQDE{M z@CSkX7&Al(4f)Xyti-hbY<3WE&DEjceKw(Jeq4R}6VJIY+!3V|y5ZGQ;AJX9H z!)pVesJ&V^Xa{0%4y_l808q$7u|N?p$l4`a1|4p2iY{SY4v3G6#d zZ%-_U{P6^Y(D4_`u z01w0BaA*V`JZY@DDh>@0un-v39))#)qm&3}Bpioyz$+nO1QZ;JC#dgLpqDq+)B9Vk Q?Ik}P${{X}F}ld{Z-*oMXaE2J literal 0 HcmV?d00001 From 3a7f1063f757bce80663ce6bc023db538b83ec4a Mon Sep 17 00:00:00 2001 From: tianyao-0315 <117445929+tianyao-0315@users.noreply.github.com> Date: Mon, 13 Nov 2023 09:17:33 +0800 Subject: [PATCH 20/68] =?UTF-8?q?Delete=20Governance/=CF=80Flow=5FOpen=5FS?= =?UTF-8?q?ource=5FIndividual=5FCLA.docx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...317\200Flow_Open_Source_Individual_CLA.docx" | Bin 24486 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 "Governance/\317\200Flow_Open_Source_Individual_CLA.docx" diff --git "a/Governance/\317\200Flow_Open_Source_Individual_CLA.docx" "b/Governance/\317\200Flow_Open_Source_Individual_CLA.docx" deleted file mode 100644 index cf2ddbd052c3d5cace9b999bad0823c1e0c3220a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24486 zcmZ^~V~{AzvIaV~ZQC~2*j!`Vwrv}0Y}>YN+qP%k+WW?Ran6nR`cG$PXJl5zS5aAs zl9vJofdcsF36L3;#~N8*_)pq3&$AE&P` zz$_1TacP#Hd%I`tht-;t`-r*cqQJo)vRYpmxJjTnX2+b%0~KHEu_o00+xjDsnKt^e z^5w#||LUl9O(ohDI2IW7qc-{3Z!Va$HK`zfUz`fTmt(_I_q4Rz6Bgs5O2smYj!S0& z7b8L6iO!DL*;4$^Frw%QRx0mOlKKmNVH#>(hZpf}1hgx^90Ql?w7k+v)OnVaeSOz2 zEh(wcj93BLYxW@aC^-4{y|@@SFot%-67c6^^`-kWmU8$nU5A9)z2+T?ajjza_?cpL zawHupRy)xuO@{eOc6?%=@WfebO$<|4^LND|{`o>Tnn02s>Ol33raq?W1cLE#E3~Ns z3d&RrnXKB4eArsmsjK)_xRP0!{dTEC-2X-wk2>JV;xD>&f6+z!Pjn4!9gP2h*E>N$ zZh!zKct_?F9`=T|Xv-;~T553;J(Wg1dYB!^6}zqo#BS@mtI_fzYItOV_od?mU~OM5 zxeqWZxhaDfX@~+~$dYi$CPpX1m_x|lSsGGh8S3~H1daCoq9V$2+!EMQ$&x`f0G3BW zef$aMDr*77aNe$QNMUDBp&&4m1qq`54gDlOk6*Ro2%w*z_3o(9VyWqL$3d|nE*0t+6<@1)J^{B zf%bN?T&CMS!5C6S%FOw|{)3FP!R9E(mRfK#=l&Oy^Z4z}aIQ9XS!dU_FjjFPfvZzS zw#=hrpc%~XC+u&TffOM4a^&w z9I@tKV6cDz0FeI+7-vT(TkC(IX-bf=9AH2Qz6t&YFX*V6vaH4JBth^HCp51fT6Hk6 zkQ!E;51IebNv9zV)zJu$H3)g>PIupXEU=6Q#x^2$1E~%6>vN+l53wb_ty|twWWId}6b2szq416r?|deo$_8 zHG#8rd5*}h*9Fx6$RB=*)8xa>KKpL$-0sa{>%N_916$q892Kdq9ShxZr=7;75Lk8u z5YEBD!Fm1qT4Z?-bgYwK4Wn%A&n!}%BzE5Hj$v6P>gS-%p=JSHoOg`Px_31z{)Sev zc`-eJ|6uX|y;Fkz#lqFr!RY_&k{OaQVzWp90Q6Y^0Pz1S;^^dVW$gG5R7cul4x6Kh zUEKXYey54vaicn|A*GOIlrbp9EPn`(I12z-u!(7`X)Nr0`ow-he|mile?lABoLDUY zspbkvJn1sP;*)>3b&gL`DR;f@NoBa@6y!%eTpFvq&Qu*D)$In3#_&e$S=)nuu_;$ot zr_cwKKk_4Rk)Chq!c;K3`in|uP(q6rM;Z=3R;)Aq(?A)0jnj5t9SdAU=XfF_?$61D zF^=#jzM#V6-UJ2xL#}K=Wj+pk1cg7}p?X`yN|71uP&1g2R=6nN2G|{^%%Eo`-z1wm zVs#`>*f^3?0$Jrl8NR6u^FjK&JaOv@K`SuZC-6KaNK(r-HEgM(OHr1n~Z1X)bX2%HXl6GwzY)i!5QGExfIL&{O;$L zcMAG95#YgQlxab#Ub;S>mZ(&ZYbjSbXy;!pmM){**ek4(oNnEh7+C-f4%N&Nii z7pd%bg3YP7^WQ4xKS*!JPvud0D?e{1J3n7FzHu#q^*|k=I)#i*r_MOT1%avba1@?* zHH*>C3zW|)6*GF7dSxw>L%DaI)8&zKhZvv8!|1fW-T5}oj7ac&CKVh}KH4H{BTP_z z$#0P@3RpeS0}MphQ#syVu1bUMfYYvwT-*onH4nQ=DBCK%X^oObNlAN|^n#6KHb7QC zWNz~==V(If@m$-@()dY8p6>(?;Zb~X+vLImv17)lZy=+c_V}V#*$pufWMl)GX>hg% zY@Oi+donoiw);kI$Rz`r91CoO8w?L{CQ$ZhqPj56MkRCDv00+Fv@Td(?yKgH&w76u zep#Y5_T14rLw}jFxOtY6g7IZt#8^Ft&^S#|?GS+$p9-26- zrQ2%YY!2oo3sy|YebmEc_N9@Yr?(6z$4w#vEr>maiq8AMn%?rgB?Wi)v5Gd#$LMUaZzW# zD3I-wykn3c7J2z${Lv(|gi#O8WTUV(sq&4L1p+WR*Lzts#^lq*Y2tx##?)ZG^vTX8`3}necG{w=v+|mTf-z)!mPooQPXxnL zsDj;f!EHwbW%f#H5%r;*rt3(WAnFGuUGge)T0bX z#vFKp3W9eU!ak$dLS5{Je|!2{N{j^hR7xVZgIsRJ1&~Mx&&AaM7ZriU_n}dos(Zp= zCPkxCOA<9;n=(OnRm3KPciI`bBCzfJ(>VRXyg7hDRiEcgO%{YLlG>_WJa=aGHcudE z{9uEe7um~6*;kHFG@7r=`Q=8(%gQ!&*keN|ieT6%F6D^(C4_1e75tV!jG`b8f@$2( zp^ZCL(U;U??WnifrGrEj2cG{_D%60w2PB@I3uGL8xXU7*mfz&LW?x z&FOd~gGX^lMvuZE3|_@wQFxSuqOnN`1!9t6a|e&}kttGXa`v~R@rF)R@rEo?^`8{l z11Z`2g4oHcGIugaTOT12v03-Uqp3!Tzq2vfidV-Z_G4j%F(^e>5k3myQfKww&YITg z)x55RLLf53Cx_~*_a_jwGuR8OHr^ogxm=AtQnITnl&myU@|0HYzRK@yRF56RPE^Vb zHTD~u<9l%=s=%?DL{+Rz|Z2ZZd2yLzzDVF`=s-yMM>Mu5iztJIQ z+p$LaBY10P@UR;)8~)Hh3H;z!v@-#E zrsDc2m$D5V0(X+CZDkX)1t^I&0#BXb22pJ%gAzze>H~_u@gdB%n&|Xy^#4m39fEDEk+CV8*;RvXtLd;=nYoSq{cRK& z8WIn)EiU>sL2R%sbZpOiK_b+)ic%QB?n1+MmDYG9>h2kB#DX!g>-v|D6;a8)(^IEd~oQkezj% z41dX^|2x%x#wRXn^LKUu|JcH2V@ab5WKW5Q#lsS1awEoU3vAK%UC-{ro){`7K<%v4 zvRY^KXHP)~`>XKJU+(BXmj9C&8-?wxlm5q+@jwWelJVcc*Y^nxh=bXVL&Vr8${7)l zq|6<_>#rz*=Im%iE$;^!)+0hqn-Yi4+ySqgM&6vpTLr~-zgR zHEvl@ZSxp)!0%FU&x_u%gs$`v_@d*c-NF=pddtdA6>Oo;AmPKQAI#)mu8n9C1zlmf zPZfaTM7T2EN1C?OjM^18+?7Ug6|Rrk|AH?`JQ|hDMc4>HU--Q;tGaIHYPsQ7PaAcyLLRXY_+C0fKO+RbpxcI z|8cKS9#cCq8XVK3??fc~XQ_~hZ=|~fEDOQTa##%h{Ld;h_pu;*jbYPdjKiXNdd;uB z#!1(G+ZP9>&<)7=(}F%1g2`zMa5_m;(MRWGs@u4A6pEEG=h&#~30|ZUiCo65UabUzhU~h|$AXtYX&HS)`?e&4eu1X*&QNp68 zBT@%uIl2V-ylGFLjZmb;AQr~;#==mI%>L>?7`O-?;io~yem zY|X=?Kw=fL0D*X>8pE)s&%1POn-`AHw*?Kma8gbx+*s>@yZ`4?mBKO zlPA99;mCzfZ)yfDa=1x-%2S0Kjua`ys)ro<7UDIcb9j{>$H^Qd6zqSJ@MppWwh5;V zKzM7``On&IDohuh ziYf9OX(pm9UyHHQWX3bE$}5RkkB)f6$TtK6W7FNdY9s1J=WXoL?L!fFi^!u?~&g=8Oz9>ghQ{w3bb9t-kq(o`PTHUL-IJD;W9Vs;l;%cL=fJti`zJ zog@GpW^4F^H{6FOb9U>GOz{3|l*`T~if6UF^y680-u4u}>p>$WzrQ`_(iNEn#}3N% zU|q0B`Ll~C@~O=T z^#Za2F8klfaP#GFfr9wC>Wvg&?z^os&s-42Ksg{YGm>OKHfBd)2zErq>lJ2D@a|bfF-o{zuf1#jGU2E;J)$_%a0v0^w6;~?KHYMF)nNf>f z%EVtFf2Q*^^_HAZmV^0GpkD>BkvuP5k4U?w2)9(|TZGKEmll!2s<9SjEfkiXOYfAM zP(Z(^st&%NqMkX{yJOIK?Q|Iyqq&G*!yd3JMwy-zK6;~)LrVMIR!k;xB>8|HPHwv^ zx*f(YMyLwQO=i08@DtQnXyQs!+9d)oK5t8O)5rR2GRy4O9 zj=w#pLMyRyn68++JF0n`su*BYT(Zft6xw|=XYCFj9R+VWVQs3Hu{ zo1S4c*0D=j*&A-iO7?z7)}zo~@u@t5ANIg>bYu1>;WjP8;bEi&hGj_{)l!z3whTUCOFU(7JYs zQ7f>B`b)Lp0~yoHXDLP?cr<2Hco_Xkljwrcla+AIuEg8RzO1hnVWlp!)s6M3BI4q# zQW`cUcvW_Da9Ane2f41yzZGGlEOT`im;{T!>vtPwX9H^TZ1y$c?qZzQ=jJ2e2Z&L1<#>XpUW^bcEA;?-_i21f=w z*p%V%B8Gjz1cilCV--9iWv{Zz>kv%XU`SX6?L9 zEm}*Tdp7an=s#z)Q*?O#WWdnXwP4jj5{I%*Z{IfTEQqXsQj|)~<~7L70}5~SpBikt z|0eY|_LE=MxFpe-SDeM&U7=|Y_hY-7nrjaA-g;=;+_Q@hha0%-NjP08iDF^X7B>ND z&^Di&c7ZDLi?@Z|!nJN~@cdR^309Iz-YM7N5NVeZ$AF%}?wMJdsqw9bdUlMUbHxEm zyxw&GJ6B0iauW#z4gdgy_CHDFfAeFG#!gP=Hm3ikznauE9rs(2e0Ito@F}*Dz1Zak zto-TIrGtAhN0qNSAvOKTnvar?IL2yrQoJS@3_|`?Jp`Rilq|1QEguc!%$PH|^;Z(G zWWqjKT66TO3mYcjnhb_O9o`1*X#;NzE@`*VUf7yuxsGs+aK z-Hy8R;YLTChAAm)E#R2uZYre^!TGM~ClNiX9jhYBI1Y}*kOcKa!N@p zx0Cg}k47Gn`-(JQ&}_%!3RTK7qx5D{-1k#M%PQg9FYf*R?W}z?qi zTfB%AeXqqu5eYejSVxR9WsT}X(F9=@^9YO4Nsod*o4w6ej1RgVRiP0;Apr4W#I|&o zg`NM4gBEiRnR4_DC2p4uIR9|)T0z5bf`?!l(J9<5azV?EQ%?zLCghTB`9gSTN>Q76 z+#f=%xR+}>H&s}TMxPNf9OZzQ3K_1>mVkpHq0A{-WlA3Oaf<=TH$SR#KB~Ydu>c~d zs%{%I5h&mN4EAfA+mG&T-UH)lbq>)iRxbrM7yLAetm?P)4dqMj5~Espbf}eAKGFnG zXdkXe9%<@BspkIQ%!pqcpl*Xctu@wB!mt{O?wELs#=4HD%M(;+dwW$2;U73*eUDzm z6jlOcw0P>eeyvk!h)GG=5l5?!QW zijFA*iZWmBRR}JTRGreDnlMzNg(uTgMcX&f5&`zdM>1wYNhmExM+0a#%HXNgf@zE% zui_n>gprM#BpThobDxgJ8{MDsl<(A=iItJ_jpvJlmK$G8>YqA|?M=R&9UilaE8w*s zS2m>>z$x?`(MIDUE`lB%YiD}(tD9S7+1wLrRlLTCt9TUbx|a#6WD(Qy(89SYez^oz zu3aLx7`thqeyDAkdmiF$C)&68da0_eAOV-uSqHltN1qS_fWEP!+kThG9C|oBkMVDV z1HB_%EbvQXHI}u=D@vzjDM<6@Tey#v$E~@`TRf;0n42+2@bApa8vTz$4xbr-lBcgs z#O6Z>ERmLTB3sLMucbiFw$9m}W%38OAD*lHQdv{?<##yLPMy;2`2O(rft}F;J{YC^pkq(?AyjD=Q z%|NZDLk@BX__}(4&4p&`Zh7Duj%JAKItA$&7jLXRC0GNF84aUl!wy%)Z`o$Y?aYwL zX3zs!rQTlbX*9}w?G=~@ZHmmU+5;-)Fau7sO(vHf?MPE;8~znh>kw0Rm!-puG9wxk zYmDR>CZ(*|Hc^>@^Rb=j-PUQ6_?G$>?M(bBwrd$B5mQimLFJEiGHDe|K%SRwAr-$G z&@;{`IBR*ua;OVjoGkMw+gyHaG$$dpR#&wd{sxifh$&j8VbN3_X2a_+$zA@V4Q;r? zG(3)#WfoJ$s(m^#DMK@5pQI&6vjvrODNSIHOuCZTX5$8p3Z6LoJUoud1Mj4%-IZ+~ zoWf)=Q+Hfl@4|!bP(B&U&Pe8HjMf=!(mKw1LaXJS|9qz;6-Yir{7l0RFY>HlEPH7w|P6Tdty(s(KH!c zrN$p~JtNao4Q%$EkCJy#qIAdCXmXX>ss%g$Zg8CEGy;Lu3;9GLDp|t)+)AKcv7_Jm zwBM2;(`K2hs@jwp~g^zQoWSJO>-9(um)RT ztP`u!rzGTUZV|dbThSLdu!bw4>8^0iR;3D7BVem+j8>DK27vSQ7Hg6AT_;e^3wSBT4h7M zYtqKph2BvEvolI%ff$EL{a3wM>q|?{ukI3wU(`6h7QqdBa`_n`V-^6ma(7_cdV6h$ z@(}wUrkk-p0RQbUMWK9uB>z@i+ra*(rv9(PG_kdHGIn76r(9H&EMvRRfDm#+edSy0 zwK^aXyR88SJul4Yl-{@*37c5dweHI;G8X@p|vh}$@=PUwk67oR5W7mH*=erHqnsXk{ z#UK?!$BHLRGT9X;DB}#gR%XC5mc>7(2CObrZkqMjN|43DNAQm7?;5oOw+ z4>K{wyMM>4@Tfj*OARQaN|0iKSt00rR!@}wQ!je#SjH()?YcnJmZsVB+ARkXbX8o# zG8%ZuJvT@^UsEQtrc{v3{sca{=|j!(MCh+_Lyt@&9!R`sR>D$ZSZQBi8D$?OFFRNs zcv$$+Nmnl=MhszwBHa=t)j4ftHGBbhu;te&sAm>StFU=o??&@PNZbqJ`3E-dMi2!q zZcDKmO_N0@HF0ReQz?@Mk5o;g$fA)8;=)U&`I(ugMJ|2bK_uJRXB$* z9`yfzArtz4tCUV=#@5FFr=0ox6h#vV0ssL0w?R-)Pe~-=BGw ztyV1-msYUG^2Kl_{?;NFNv?X^>6i*7H64ziLM*R7%-E3{;LrMgp9tq@ZlfU$d`RX* zv&`1qz=;(l1FL7izYtZaOzAyL?W&IVwQ?MuQ$Hj{o zZs;q%Mn3&KZGCz$^9DTj6l8R6wF4Q=*03}uGLi!@4ria5ntGC|FcJ$u6w{|zB9(Ju z)etqUk77XRy2`7P5$ z84W=tqgzG&1>zZ$NuS7Ch-8nt#xUgq8mK~NG9j4IV!*lwvPA&o)sX^F7A=%1X__SI z*_&$UW_`h$=9wELqQpqycZ|HP0Spn8LN?XXCZTH{B;v|-)6V6@=3mYH1XrYj=aHGb zgw@g8vBG6jyKGE{e?pH+%YE$2BetsEEcntL(IQQzlungy)z}c6m5l#DCiltUYhKNN zuNf3m@e4aHVWFW3g1p2$eDv<-!n3TeLhC!EVl^Hq3H+uQJL69e)ZCc>NIkQiHE0hq zdYx$m;19`5Hm5S&fOm-v=ysIak-WgBe)^rgS=ZG*rwO<>q73Sp(7(!B65|Jr5jDHf zh{|TF>-1$GWEVrHoCv*RQzyJ3>0&3jBnz(bv*e`6%cAN^xmyz5Ow z%_+kG#5j4R!BDxvTGKRTdHPF6XAm0}7~u(S6b++VA3FhR8}3wfLi5v^^~6nH9bMg~ zMP%3s@Fjk#Dalt*Gyl>vME&rFZbZ>tG)aNiS>|AIdqT6!Wfd6Rt;I1#s9cHt&f3oo z{()ZW18Uur%wApC)-PlF;GDtzu3R{$+v{ao%)a0raRa6c9*x1-2sEi z)OtC9epiLw(ZqK&Rp))VGp?oHozXTGxB`v_%%BZ{MbH$cPv4j7sal(=OsBl-6PgEg zAiJ0mm^rZeS05}M40a*$wZ5H$aH{m^c-yjE%W2bdy-zCRIYNN!HLz)c34Qnrb=DTF zX9b*q2d+MKP8ZJhq`t5@0=4#=v_-@fJ3+)i!he~5k$uj<+G z1)jJ;kW`N$KykCOI-f5pOIfJn7TUfU_K%HoMy0%=Ww5lm)W=ZOoEp>V7uB>}j*?M2N_WV$xC5NC6C_7)NX{w5uW)_+W z@)lYMjjVTL@U*>%XBv?i(UOQc%Wy8U<)>Nq+Tr->Dg|YQYb76u1tnu&9EO>O9>$p+a!mySPt6J zoNuQ_xH_kH%~(3{8s63smN1~a0Zl|y%wiIL%hQa1_z$!5mlu&PE9u!o+O#pMFLg$A zX$wKOmsdD;$U2*V{U-St4>We(X|{c7c+w;LH4*boofRT}WS{=#w4Tig!ePkjQ7kuAi@~#u zq}mh4?jCe*yfItJYxdswo6JA#{l2W@F8C|bRB>Tu8a?iECFb06(^L%{+F|*- zjv^M#TO^ zOS5%s6mQD0WD6gBKbM2L{1^OBBXlL(EIm@x_zF#fb!;t=H*LdZ*`<}Rd3;uVl*oHcE14gf)3qef3A$>*b%=Sj;4) zRMyrWldU+yBO|aw%2E17RjO1LV9_|NqT*znyVDUwj5H)lpj(SaLSu_m74NAuLn zm-Vc?nNlUe?WpH2nvN42xT~4Ya9)Y1)F_Ga(xl5HEt^^?)6dI_g6>DNM%a^j!pqZ= z#2$(PuHoNUNKraaRxFTSaRJwL2;GR`pX!ur@^-9+DA=}o+z+9ERrRD)c`d&j6ROuj z{{$!mW0UP{i?@b;21g*`#_v;M!tztCt14sGrKG3fD)x}|K^I{liIQU^!?N-a^*v7< zo3fOHARD##_0U#hgd@&0*5XRwP`fe2wo)kTt#rIw|vbn6H}Vb(n5%0q=Kp_6G{Lh zE=^YIo*i>0A*%kS!yI46H=y8kMcXDR(Z262F(1@oH?JofN+_z^12u)74~>c zOeTuMD-4oUw?q;*R%D#IUsPfN*(@(_G!KyyWEKQPv;!s9fG>VLY!7)HI6t7PE=wmI z5i+0o6iW};0>wExwBPGcEi^xnmzo4tloSyyCL~782)KXYjfDd#G>0%3rqBAiRW8jT z-&c7`8Y6IAbx8{;=lkd}ocRzv;Z-_cgY*&4;X6}4M)0WTs1z#>_+IBXG*YeK&M?(+ za@NZvLzP-lfUGMsXRJ59YHqNG69Hp@pev3rI1YXGi8^%)3#-MR2lhMry_WaW(Mr5g z(Ve5K#RhxJUi3sy?PRyW$;*$=NAaumVSw$<$H@cDkoQN zQoTIf>PJsL-Jgr4AXdkbj7+|%n3W$7)-@n&r%BL_@;>34<#`Ji!YdAZwiMB+2?$L(EACcNImS*Xv0zp1^s8}7WJ8y!39D(Bp`tt`DJ zC0qI{D{TiI3Y4BFg-xu1gp#@*2wHfu)jiF2-a|g3zn?71hei&gW1vt4ZDd#&meb^y zFY2m_oJTo4-Psx#uihT(<=7gqe|r7gRiV1P5b%F+w5{&+E9M+9v@~)7pQ>_wW3~gr zrn_`TX=T*0ch;o%^_Gm5>yoC|R!qf5tN2GNwT^|1b~FOyC#`MPksUF5C&$gM_Z=Zb zKE}Q-4}-d1Th~i93{T{NQd5^VTh@Y6Ev>U7H9cME8eDon-!Fs`voP2%MjoE8L@tFd zFJ@ifE9*v&06Z&Y^}X)r@q6|`&Sr-`5U_Xa>`rN?jkntrKov> z-wdj{cjfdm>_Yh>rgYr&r>3l;wLb2*= zbOv3(EFjt`{}$p-nrYE0Y%70nlyKO;g56x!iLUDII%fpVus|@XYqXWzw>dA)#a{}xZZqz|WwYY}U@IcAq^%MD3oM#$zm&pc)-DES>UO4UK>YWnL>uiivbmGJk~A}x z>JEj&2pUfVU`CJUmfZe$w!7YxP9WeyMrJ+zq=PN(XXEpM%qYWk zZSa%B#qihUdaJkVQnsuoT&u&{al?^GLaVLP0nt@ zB#Ace{D`F5QY(4ks*d`QWXAwmVtaFNGI3(0Ay@D!g290h0(Mm`oQ<){N@9egEOC$Ks)Za}`?FXYk*ALLlU?LF`LrJEFJ(V<}~D; z)wI0q5yY@b(5Z9atDorTfrm2ceRKz`_x);1CJl;!ibI{pq}+gs4?EOw1UD6Eoyg!w zAA(&P1Xt)>UT#lN8d4qwa5aVDkwT9uN;ld&ydH8^_93vEjFo5r=tvsInDfOkgIWcs zU4%J0{k_FI6pzEc=olCO|#Sua>qRPN70B{ZZQGVPr&gCckrXM<@0*EE* zHwiLL4l*EA9RVPU!^AIrKoOzLKq|9@h;iCd%{xZTOU%LSy{>Ca3r+dWD+|=DRVeat zDypp)`)Qy1#0HKNNITZc5FJ}sEvc&}2^Dobz3eaJt?c$R^}9Ck=5JUv>d~z21V2j$ zJYP@RhB^p%8nxv*jQWcP5mghiTV$IC-!=nlo#RHb+5r0#_dO8=+e5r)MZH#t9q`AS zF0fyVE!7N?US1S-zRwA)VD%Xl=}%9S!>GRa4wvbn%Y%_VVB-$q9zO`br(s#|P7{X@;q$aMjVJs~vR?y!a8gDfV#;a_UyLLH1V# z2u7FDf1H;;S)ef!b=>0gs%Y)Bi{jV*+z!%|Q1zS4YxsZ$S+aE{Wnq`lLdzScqTSMT z`EBdTWdW~FdeV6sE@WVgG*0-9n7rd$2XF@2WVTw+^R!&=6k>kf;}hfp!V6sUgvGF# zc{1B4Cy$g*o+~QST&058R2@#z+gWmlXj&%etGYo6`Use3i##9JPp)vM^0qC~Z|^$( zhSfAESk}qu;Lnc&r58Zfix?TiHR?KWLO-S5t_ekHf3!D zxO7%>O#d)gUqIH{kfGzBj8edwFMmuS1TKM76`GVsMzEZ&${TLkDH$az3gJXJyQAj0 zv^g8c6KcnX650fTY?BrT@x}|~P%D)r5l)L3vr8~3=HmkNrN9tQDTruooxj?ci<4al z@qmf>t`!x=X+V~Q;X?utVUZyrzy!lNIxouEbEgfLC(XeY$O5v!>Xx1=QGT>g2${uL z+4zJ8uBIj>qb@(s4gZZIMAe!0S!ClS`O*bhS9z0#+I@)PKM~LYU;hvQ zU1oOPoyD3*$1h6{dZC-vgtn(bYb+`R(d8=5CU zs|Q|TD~-`@2Q@L!{mIb)xZC%*3~Q8>zBd7UVRSJJYIz{3YjPCMYERox56N!}&2o)v zls*Fn!RPYG>#>E2ND`W$6@RzYVXfWX!5b1J zgxHl8FsqK*(qn7YSvG&mv=TN1qqJMD)>ssplC}8;Sbo&kz@a>{!?a+E4QuP`4+~nA z@&um$Ar*7U&H3RD)fga{b{JrJ;e`chSR3sZM*Lmh#F%ssrUR1w-HA5JXxR}+8STI4y!E&w+PX-`ERsu z{75W5w=!=ZYrMyds<2l) zPY6o_tgD#DrS);BTb`y8(q{(na({}lj@cQRkOXixf z1TYmDqPWXp7FwgVQQ-v|lmjWp<-LV1?DT`chxHzYBNKHAiw)IX7Lo^ZA;<|JFOls} zJbnTOOZj#P$sO#u_a`=y83zaIoWXI9S&z_989;L=5s(KIhTu=?T`3HIn=2?Q$sfqg z+e^F*=go^4P2}EY5@gBXAmYiVu{1Er9rDhc{twE|9GP&gV5&Qy5Y9->N-nko))J1r zHOtM{bA`!;njxdd+UM5~nhWw};Iy9j%&gehzh@XzFr1GwNfYNuJnt}204aagXA15Y z8Jlx#=sc4H!_WQYs*UGK*RXY$YYDkMwvY9#zeoJ;Mu!>I3Ey8#PJ@5$a`Y_ydImDI zn|nHXSotF|rO?P<2sB;Bj4JAs*rx@Rt~rJIOy)3#K`r zUeh*rY2KxZiN4{F$W2U$_4xwE{6%Q~$=`(JU5tKTV?BUBH)DlVS5Hq5G+8-hiN!86 zj5|ByUR5fnBU-N-J_kWS-a}!b95k_=;f0-8;SqNTHWrFThT$#Z~$(*xnj+zC7jzZ+!A=>ua`(Ee_KuQ`tub%0kKMT?QHVIh9#fhefz*^}X6Y%b z7?J^rjAD&X>e-x9iL@rPNht+Hn2(1DZ(0tkyezUzqMaiv&q9r=Wyba94l%mCZ+ zgGdJ0w=H`!@}!k2mwI8=(5UaIH=|#qLsjVe9D~sfM(n=S!Q4uRArObb-6VV>&P8X` z`a^>9Tgb}>sF`KKS_37WA>?)Ah%nv9R8(^@T10fe2yW*bqE+Z&u2*q(R>qP30>eUF zUXEyVWp{_MydEW4$wW~`-cWFE0vLH#ojA$0vv!(BrMT0&H5Q%=dPx7dN1l7=$PIQB zxx}O86f8~p4aNbSFeHUJK%FT5$;VlA>rllUk4jk_bOO>)YSiBy0c>4f&D(+p8x>DQ zCd3{~24N&&ED>`;=rK9^x1g!veCY4lMJVo~S|uoMW2MWa)dnM#ZZX9+2jU_UNM_?$ z`+0lCYdacGZwwv%;=<24STb(?v?-G`O2~!gR}R-RuWLdInsC>NZxa{p&Yz zBvmN%8pFY$E{A7LCKV#3L!Q1G2mb7d>Mt{Gt%lzeFgIY!+cw&=DARWduR>!lP zPwVkV+-FayG%q!VHjL@YSnKHQk<+UXxntP@fo^G zHN&1)PtsRu-axAKQ&s3?fxT;L?jI?eH&Ry(xW&uNdZf=%~fVCy8^~#@2Vi41lk+J*d5F&1Uyi&6#br~UN-Lv zR7{Q(ub-5zhmcK6^KtWb;mdN(;c%|2gLi9$Fj=80X@CTT+sn!q=|1caH?p0Nc-3LB zqI&b0L1J~wM~gQ~n^X}fW<6{7?Iq&<#cM$H#J~+M;vRU5fy`LIf22Yw z7a&He16T0GZT;>ZC{Z}_cmCcID0fn$4xBqJ04-g2!PXX!;q3vPnHQJMOS+WB()6_ zXLYnd4q^((f^TM7rd&jdM9t}>Bl6#HBP?@rywKY@c_V;Vo+53f_x?~&0NPRC z&Wu&8ZthEU_^Jb)a}hmBNppv1ygHT{5-jhTxxXA|Jns=oL8>iRN$1;UR)#iL>q1F7 zJvm1LP$tIYhNpIhIC{AArU2OsrwVv(L_bH3VHu=1AEidV{2r7}U>7K+3AL?cJJG&f z;aG1k0^i+_?@L)t5frKI;6W}kQ}KY zqy(h91OyR~K~Nfol2W8YQc6-%@*DJ=_vgi1x$^fpv-x?=lATd6Lte>+1jxmLh2a*$>|UB z(Ba&(!K`&L!HGZ%>C^KV@cF(L-7)@A;1ldQH4voalJTPYYNUIOELn>Vf+p*!P40E8 zfdo(>ExY`QK3Eysd%Z_=kUvf!m8@DlR@v<w+IU1=0LdP%+PCBO?^z+eV!cRwM<&TFX$I}D1f^L!Hc=Xw8;IA&L(ed0->hK z{_#DpKQw>WE`?hqH$Sxq8?=w^HQnecfn>ZS;+l%X^>Vb@z^kG$fgG9nJMfDg@rvyO z{nr(4_dh@7h=ukCn8T!F=bVMV>RAs{KK!c6>gSTgB4l8KHiwlfKJz^X^44Xx`9Zi( zI3{C$fFl;WfsvWRXdQr;q-Qq-HgyFZL1#&OCB2jJ|MJtxDVcz6ntZlD2=WH34 zYy2+yR*Z0|Nv`GnTuGVZ{?YU;&=Jki(jl9%J>yJbr!~jVH%ZKyx!R^mN3>E3 z49;kHEgzOl^^#?K${J^c3Y;=1L`a5__>N8|``V<%l$-B3(JdKJT{j+y0lI~eVHAn+c#`W=>6KTI#Pc2BUL3_jPq15aTALF$uwIkqM|ldCDcqt&M&=bPig z3DvaK55~$3GVsQ23H;!KiHDm)1-uJ|oz5mb&jp3E4YI+u9|z_XS6{toF)@Jd1O9?|vk4f($Z_RaitP&5G(v zo-*|1pa-ZLR*g7)G5|sI_c&#WycBXmPPjh`qu29qVXu{$eYb*X#3YDxI-MsGPzlMR zt-qA$vLN$AD&SJZLw|1N-l=rNh{~g(99czyota-nA=F``KWT}=&Y;GND`3e0nG7=^ zEF;vSB%_Yc^i?rN-OR&80&i#HI{wf>EX=EE^doELINw%ks4zMXihau+XPb(Nn_|!q zb6^dfksF@dGc|BXBR47(mT{lov0f4oh!J5WcRuapGoXIn$#+kNH@V)0){%H!?6JaW zoDKE!XOERb36X|R*Rmd*P(p{53eEge!sFGuKT=yD#WN6Rv6?fx2gkwM@?4;6RsFI% z>j2JR{-Erv^?iEr~2mq3Xa82CAH>K$cU-Q;1}|m2Fnm0qvEIc=#x!RX5*3Q=%ub*!@t; zfa;VoviiR&t);<+IJ9)m==qO0^kjySo2OSdDmBuCstXiNLh%b1XioG4buJ)`77JOL+685J>Zp zxGq_z=qHo?p+;S+FqI!k7h(i%=~ z*V4o`9m4&5Go_lnmS|n`l1)Ag#%iJHX{b2d8mu^aeg-y1+gtEHewh=k?i($_Ru&694QYWA z`ET}$OWnnw7wUF$no&~)ON7}v3)2-Pmtxeg1MZIbWibDBjfi~mF^ueN2u-tGma~jk zq!;}vE)p_J!ow=&wHYJxpc$ABD_6-mjY|iMK#1>}z5twEFUv!!QOjj%+{=0obXrAw zZv=Z0mO8;V)`d(^T)2H$J@Z{OE-QUtTqM|U)mYTY#Pgo|SeIvN?xY^iV$4%ZPRWUN zQ%_GS@b=|iBgDUYu`=o1>Y(gn^XGVn#KK6qU+ea4H8JWf?hlpd6yzCMC$YQ)$D_P| zlG4tDLB#u|-8Mfwu6B!U6)jAg*758c+bP}hyg^iz>S6tHP7wOz9XNi-2Wbt8O`POl z)4^p$m7FZySKg$(BOskHC?CB(5tF-ePQ7?heei{B7uXw%V#$?aiAX#Cty8seXGvlF zE&4XShycrpwE?b{e#yyxm-E6LRmVbTmROgS*+#;p;l9+mrO5Md_R{w^-)}kMZ+40u zYS;a^c%*&5T88w4r8hf1Utwp=mq!Bcd%K^@4nX*^GJ)w*QAx_l*l(dWirXsk&f{9M zD~>A}nT*Hb1uK}rY^YzhiF_;+qbZsiY`~&iRwJJF`3z6FS8KG9Wwky(9r13A71FFN6*O2=TQkIeg(4g z$nU+c>pLFYF`G@@W+J%z=Impe9NrYkv38NOb5a%tc1q|*^okd0>|_>*u-Ta&ped`O z@#bK(kl9p!6fDmj9OzZX!~6)V$DI1Kz2wfH9Q9Y!0=#{Q z4arI6D<#A-{Vzr`>a8UjjbXjzj53ewhj-%H2UD^7E)O?sG%KSkY9|bL`p4d@ycx>= z2(NBm!s&RAM>{G20vvG3V>?#S2Np_!gBH(yVb1!3{it;b@CfwguEUY)x34eG%thK( zF(v857b!It16AG$n=&JPh0yb{b~Bl6?C%6{DP!$YVvj8X9`p+= z(rliSrQ_E@O%v9MFmVq!V?3YRSy0qIjP2=&v%oDNXN4_Y`4zNGAoch1Ir$h}%jur&J2aR?^dmFU4ao zecv}wDsedz8n`j}s+VY{GMqu}LCK1YUU`G*46+(t{PLdxg^Mtx@eMQ%WkN3^+{^n&4H136xM2uSWGTorr!>; zA@R67{G{*o)*AXLUWR?4hE4PGtI_&~T=hbDx|{0Cu2a|=@V#f?k~@i!ZHks0?JoA` z67r{^v0IWP4d$*kX+;a>#6hn&QErioQJe!ct~8GBVt!V~+j^KjpXDdMmhAnCGHWS@ zSN?+OhntpW> zh8GiEMD4vNy1F>2qrAEY3IZzIqE2-#-Oj|aJIWi~se+dWf3Dqdu}e1g_HR0PmI&Q4 ze5dIU-K+JmGNbtFUeT16;4CQdz4i_#B}()Zw@v-6n%B1V?IBd`c|23H-*GVd{L~dxymlNmPTTyFV6|gU*Fp2(c&OvRCjj%apgDIx_)58W zZjGU^!l@2pXKDf3TvZ-+5Z-Lwp2L#1?Z_}&D@4xf?}j}o=CAzjTi9FU9fqw1gZk}b zJU@Z4qIbOGyYBNdXGe!AFqwljP8zFt>I0Kk>mKF>N=if*iWn+=5}&?VOGx5R7lwX` z5p?J77YZm7b1)El>-{z!Cf?r6dUncbg@1<8M2+F-{6ute7v$@89;PM1i+8n^iV-+d zVK6gYQ$Ic3u!L0~`a%L7ICI|XSZ*{S=;ZnB9m=$>aEV^pfa!(zROZ!BWZ7?OGj4b} zZ3uU_D!B_mdR;GT{2gxz`J)ddYjxfH#P&|2HkT8#Lvq%H($VV9+2B2is~)Y@3{a>1 znEM`|2TcZxMb8`eZiqK2ox_l7@4*n_kRqc1HwnMqugHuciq#uHRq&w^vEvZE@ zy87pUSd)moI6X4jx)b8FNOn28Y1zJa0Hr{vLn>|PoYtK)`-BefqJbW{oEAU}EC@p) zdx?Shihp8pyrz{yyGL!m&@|ihgC28k1=-{fiT#n4C8%{dP~;BFB4>i^Q%!fA%)QMh z@oem3ORF584N-CX7D`*$L>cUf0k`=at{_jFtr#~<6F#+MPZirisx}oH^krt^C<}n6 z>Tq0iK)q3Ea0UV;fUh3>ZT&$nR9PWVwUH-Pcl?nh`d@W%SadP7KBEX((tj3=xoptS|LuS? z3=}yt8*u4$R*Q~_BTbKh$nAjW3v@{dtPC-!=Gx7bm8>$ztO5NN$XkLqPe?jN4MUIt zjl|(dtP34xKKS4fe(hvs;K1VBOO6ET%R+|gFUKn~Q;1uZih4*F>Q34OKnR+k)?vUPc1kolBf6`MF>NrvH(JM zH8^;SsN`}SHQn?IRR^)PLODSsuB!p`Wu2d(hQY{4F|zdG_^$c0;~iz1_Jm$KmUTuB z*hWexL$sgR*r}9tJ0d5NRG08uV+~VFIddZ#PX-6nk4Bxu5+2)C&x|RQBeJ5S)X~gR~RcqVd zHg~_xDBu?=w_7wXPa!n$we$2T`Z9l#KUK{gZppiA=}XxNdg(H+9z!Bewh(iK@rRM# zNWW(^y*iKPdJaCLWF(YKP@>s8zLwckt9H7a7K2rcg6R(05>}s*dc3+bm?mn0R>?qN zFNskeg5!~4<0Uz;lL}IbL8o|u_mqq;Ig4mIaZ^~s+?R9c$0I%rm^htXz`3?K*y?+D zzc^8sh!XfPSN=5qUcGM){s4I*HKcz9_y3RNKmMiv7S8XWc_mZ?J+lIl0;v(<{OJVv zRq@|`fM4-_KIG8Bi_^6e+7$W;;y&zb9V6NlBU8!bk0h*lSp~;S5lyMf?Xeq{?d5(4 zU|!le+v}a$3Vg2%vCQidLs20Kl}$Y>a8C{%+PqjmBdPWZb8eDDK_S}weAY0F@iyfv z;i#%QNSm6XH2qAkg1xf3hU5or_Dqr_IOPRS^0xD(_1%$7kuMu=FOk=ii$zJ$+w&(v zK7^ZOU5y`EPcEOV>}y5Dx$3VCiw$m8D-hP^%L?(D zn*Yw!nc&@r=q0T_5g{~u)y|#}otFII2lwrV8A#>bRjSxms}{t2vABwcF~C5I09gFX zSSEaWd|pOV-O;G-7M!sxzUXWs&h3#9(pkRvee1V$=v;ffed^KNSC(xIws}rva#VLD ziKrGM4XR|QiV#MJ&n=2lidDjWWh{J}P1)n+4Noeq4|?&_lTzu*FX1YXGnoz7GqYA2 z5Q38VX2M@VNqmT+5T(OMYrlqEXztHv`Mv(^0v|-cC=f&Z8rW(ihnQ^EY|YwN^scbF{MV0jaAl=!8FIgd9?V@!Hbh+x7h03w*-ObvzV zX2#dB6!_1J_psOz@_%dnsBGUvrd;`?Ejymh0{Q$gZ~f9RC2A;p7mg6EgbcewSnqy@ zq^qiUX=`Hl7QE*}x|^ELL;CdZ$?SM{*5l$oeXvo}*X5pxM_%>eqCe;qL*7s0Y_DFNF}y?Mo~p;+-U1ZOej_ML}H3G>wa1hP6_VM$Rpyg$YOE_*b0oyILA35$nxf!+%;2~>-APG<=npWZ7v)D?g+(1A#GZ!{ zU+_gwSl>L8lx=4`S(t3emt#Ob{;pcFI{&h{k7~2fpXC;PqHKMmT;@z=5Ea@L!^h>L z#RP7{`GNiOnvZap@)zUHC4{#T`4$P%@B91ar9xaSBxEFd#HYH!f4y+O8u;%(*z1h` zt6bBu?REan-8VbEnc=TBzdDWmNAq(;{jbihIo-d?b!XS*U)1hDPx2*pW&~*|29njIo@tsrhoTJ d&G?7#w}D#YKHAUhL5!F%(h$o)Cx+Le{{v`-J*fZy From f18031ac8441c134c0882c3fa76de0e2fb0ca559 Mon Sep 17 00:00:00 2001 From: tianyao-0315 <117445929+tianyao-0315@users.noreply.github.com> Date: Mon, 13 Nov 2023 09:17:50 +0800 Subject: [PATCH 21/68] add cla --- ...317\200Flow_Open_Source_Individual_CLA.docx" | Bin 0 -> 24527 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "Governance/\317\200Flow_Open_Source_Individual_CLA.docx" diff --git "a/Governance/\317\200Flow_Open_Source_Individual_CLA.docx" "b/Governance/\317\200Flow_Open_Source_Individual_CLA.docx" new file mode 100644 index 0000000000000000000000000000000000000000..6d4a00ebab493d56552269f2b1d21bc84286226e GIT binary patch literal 24527 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 Yu2y@3c()#er3*Z`WLOypqlu0q5uE@ literal 0 HcmV?d00001 From 3466e5fdcc5ef10eb70c7c3d86488c88193e0396 Mon Sep 17 00:00:00 2001 From: or <43975495+yg000@users.noreply.github.com> Date: Mon, 13 Nov 2023 10:42:28 +0800 Subject: [PATCH 22/68] Update README.md add compatible --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 561b33b4..0312759a 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,8 @@ * Spark-3.4.0 * Hadoop-3.3.0 +Compatible with X86 architecture and ARM architecture, Support center OS and Kirin system deployment + ## Getting Started ### To Build: From 2b8860da2a0c51778c056529f3fbca1e1dcb4e10 Mon Sep 17 00:00:00 2001 From: or <43975495+yg000@users.noreply.github.com> Date: Mon, 13 Nov 2023 11:42:52 +0800 Subject: [PATCH 23/68] Update README.md add Private vulnerability contact information --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0312759a..5a784173 100644 --- a/README.md +++ b/README.md @@ -324,7 +324,8 @@ Compatible with X86 architecture and ARM architecture, Support center OS and Kir - Mobile Phone:18910263390 - WeChat:18910263390 - Email: wzs@cnic.cn -- QQ Group:1003489545 +- QQ Group:1003489545 +- Private vulnerability contact information:ygang@cnic.cn ![](https://github.com/cas-bigdatalab/piflow/blob/master/doc/PiFlowUserGroup_QQ.jpeg) From 31a3086c0749e46badcb37c73dc22005d8bd2db6 Mon Sep 17 00:00:00 2001 From: or <43975495+yg000@users.noreply.github.com> Date: Mon, 13 Nov 2023 11:43:32 +0800 Subject: [PATCH 24/68] Update README.md add Private vulnerability contact information --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5a784173..80c5b909 100644 --- a/README.md +++ b/README.md @@ -326,6 +326,7 @@ Compatible with X86 architecture and ARM architecture, Support center OS and Kir - Email: wzs@cnic.cn - QQ Group:1003489545 - Private vulnerability contact information:ygang@cnic.cn + ![](https://github.com/cas-bigdatalab/piflow/blob/master/doc/PiFlowUserGroup_QQ.jpeg) From 05fe208b42ccadd91df3c8eefd0f61a3a4d405b0 Mon Sep 17 00:00:00 2001 From: tianyao-0315 Date: Mon, 13 Nov 2023 16:10:03 +0800 Subject: [PATCH 25/68] # add license and copyright --- .../cn/piflow/bundle/hbase/PutHbase.scala | 21 ++++++++++++++++++- .../cn/piflow/bundle/hbase/ReadHbase.scala | 21 ++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/hbase/PutHbase.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/hbase/PutHbase.scala index b2072299..6bf25faf 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/hbase/PutHbase.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/hbase/PutHbase.scala @@ -13,7 +13,26 @@ import org.apache.hadoop.mapred.JobConf import org.apache.hadoop.mapreduce.Job import org.apache.spark.sql.SparkSession - +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + * Copyright (c) 2022 πFlow. All rights reserved. + */ class PutHbase extends ConfigurableStop{ override val authorEmail: String = "ygang@cnic.cn" diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/hbase/ReadHbase.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/hbase/ReadHbase.scala index 595fe93b..c16463a4 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/hbase/ReadHbase.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/hbase/ReadHbase.scala @@ -12,7 +12,26 @@ import org.apache.hadoop.hbase.HBaseConfiguration import scala.collection.mutable.ArrayBuffer - +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + * Copyright (c) 2022 πFlow. All rights reserved. + */ class ReadHbase extends ConfigurableStop{ override val authorEmail: String = "ygang@cnic.cn" From 6eb2360873334e525ca6077f529cded03c516842 Mon Sep 17 00:00:00 2001 From: angy Date: Mon, 27 Nov 2023 11:10:50 +0800 Subject: [PATCH 26/68] add stop ExcelWriteMultipleSheets --- .../excel/ExcelWriteMultipleSheets.scala | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelWriteMultipleSheets.scala diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelWriteMultipleSheets.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelWriteMultipleSheets.scala new file mode 100644 index 00000000..c9e35f86 --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelWriteMultipleSheets.scala @@ -0,0 +1,85 @@ +package cn.piflow.bundle.excel + +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil} +import cn.piflow.conf.{ConfigurableStop, Port, StopGroup} +import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} + +class ExcelWriteMultipleSheets extends ConfigurableStop{ + val authorEmail: String = "ygang@cnic.cn" + val description: String = "Write multiple DataFrames into multiple sheets of the same Excel file" + val inportList: List[String] = List(Port.AnyPort) + val outportList: List[String] = List(Port.DefaultPort) + + var filePath: String = _ + var header: String = _ + + var inports : List[String] = _ + + override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + + inports.foreach(x=>{ + val df = in.read(x) + df.write + .format("com.crealytics.spark.excel") + .option("dataAddress",s"'${x}'!A1") + .option("header", header) + .mode("append") + .save(filePath) + }) + } + + override def setProperties(map: Map[String, Any]): Unit = { + val inportStr = MapUtil.get(map,"inports").asInstanceOf[String] + inports = inportStr.split(",").map(x => x.trim).toList + + filePath = MapUtil.get(map,"filePath").asInstanceOf[String] + header = MapUtil.get(map,"header").asInstanceOf[String] + } + + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + var descriptor : List[PropertyDescriptor] = List() + + val filePath = new PropertyDescriptor() + .name("filePath") + .displayName("FilePath") + .description("The path of excel file") + .defaultValue("") + .required(true) + .example("/test/test.xlsx") + descriptor = filePath :: descriptor + + val header = new PropertyDescriptor() + .name("header") + .displayName("Header") + .description("Whether the excel file has a header") + .defaultValue("true") + .allowableValues(Set("true","false")) + .required(true) + .example("true") + descriptor = header :: descriptor + + val inports = new PropertyDescriptor() + .name("inports") + .displayName("inports") + .description("Inports string are separated by commas") + .defaultValue("") + .required(true) + descriptor = inports :: descriptor + + descriptor + } + + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/excel/excelParse.png",this.getClass.getName) + } + + override def getGroup(): List[String] = { + List(StopGroup.ExcelGroup) + } + + override def initialize(ctx: ProcessContext): Unit = { + + } + +} From 5097885db7acb81aa986432dc18fa4dd57f414d3 Mon Sep 17 00:00:00 2001 From: angy Date: Sun, 17 Dec 2023 14:05:49 +0800 Subject: [PATCH 27/68] ADD dameng stop --- piflow-bundle/pom.xml | 6 + .../src/main/resources/icon/jdbc/dameng.png | Bin 0 -> 46817 bytes .../cn/piflow/bundle/jdbc/DamengRead.scala | 110 ++++++++++++++++++ .../cn/piflow/bundle/jdbc/DamengWrite.scala | 109 +++++++++++++++++ ...{TbaseRead.scala => OpenTenBaseRead.scala} | 22 ++-- ...baseWrite.scala => OpenTenBaseWrite.scala} | 18 +-- 6 files changed, 245 insertions(+), 20 deletions(-) create mode 100644 piflow-bundle/src/main/resources/icon/jdbc/dameng.png create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/DamengRead.scala create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/DamengWrite.scala rename piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/{TbaseRead.scala => OpenTenBaseRead.scala} (85%) rename piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/{TbaseWrite.scala => OpenTenBaseWrite.scala} (86%) diff --git a/piflow-bundle/pom.xml b/piflow-bundle/pom.xml index 6a8ee7a4..79a0b244 100644 --- a/piflow-bundle/pom.xml +++ b/piflow-bundle/pom.xml @@ -19,6 +19,12 @@ + + com.dameng + Dm8JdbcDriver18 + 8.1.0.157 + + org.apache.hbase diff --git a/piflow-bundle/src/main/resources/icon/jdbc/dameng.png b/piflow-bundle/src/main/resources/icon/jdbc/dameng.png new file mode 100644 index 0000000000000000000000000000000000000000..f9bb7a8c09c9ddee145fc03185f46f5aa687a9ab GIT binary patch literal 46817 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 P;J@pd`Wg*twh{jaO|Q9t literal 0 HcmV?d00001 diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/DamengRead.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/DamengRead.scala new file mode 100644 index 00000000..7f197716 --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/DamengRead.scala @@ -0,0 +1,110 @@ +package cn.piflow.bundle.jdbc + +import cn.piflow._ +import cn.piflow.conf._ +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil} +import org.apache.spark.sql.SparkSession + +class DamengRead extends ConfigurableStop { + + val authorEmail: String = "ygang@cnic.cn" + val description: String = "Read data from dameng database with jdbc" + val inportList: List[String] = List(Port.DefaultPort) + val outportList: List[String] = List(Port.DefaultPort) + + var url:String = _ + var user:String = _ + var password:String = _ + var selectedContent:String = _ + var tableName:String = _ + + def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + + val spark = pec.get[SparkSession]() + val dbtable = "( select " + selectedContent + " from " + tableName + " ) AS Temp" + val jdbcDF = spark.read.format("jdbc") + .option("url", url) + .option("driver", "dm.jdbc.driver.DmDrive") + .option("dbtable", dbtable) + .option("user", user) + .option("password",password) + .load() + + out.write(jdbcDF) + } + + def initialize(ctx: ProcessContext): Unit = { + + } + + override def setProperties(map: Map[String, Any]): Unit = { + + url = MapUtil.get(map,"url").asInstanceOf[String] + user = MapUtil.get(map,"user").asInstanceOf[String] + password = MapUtil.get(map,"password").asInstanceOf[String] + selectedContent= MapUtil.get(map,"selectedContent").asInstanceOf[String] + tableName= MapUtil.get(map,"tableName").asInstanceOf[String] + } + + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + var descriptor : List[PropertyDescriptor] = List() + + val url=new PropertyDescriptor() + .name("url") + .displayName("Url") + .description("The Url of dameng database") + .defaultValue("") + .required(true) + .example("jdbc:dm://127.0.0.1:5236/DAMENG") + descriptor = url :: descriptor + + + val user=new PropertyDescriptor() + .name("user") + .displayName("User") + .description("The user name of dameng") + .defaultValue("") + .required(true) + .example("") + descriptor = user :: descriptor + + val password=new PropertyDescriptor() + .name("password") + .displayName("Password") + .description("The password of dameng") + .defaultValue("") + .required(true) + .example("") + .sensitive(true) + descriptor = password :: descriptor + + val selectedContent =new PropertyDescriptor() + .name("selectedContent") + .displayName("SelectedContent") + .description("The content you selected to read in the DBTable") + .defaultValue("*") + .required(true) + .example("*") + descriptor = selectedContent :: descriptor + + val tableName =new PropertyDescriptor() + .name("tableName") + .displayName("TableName") + .description("The table you want to read") + .defaultValue("") + .required(true) + .example("") + descriptor = tableName :: descriptor + descriptor + } + + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/jdbc/dameng.png") + } + + override def getGroup(): List[String] = { + List(StopGroup.JdbcGroup) + } + +} \ No newline at end of file diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/DamengWrite.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/DamengWrite.scala new file mode 100644 index 00000000..73c316bd --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/DamengWrite.scala @@ -0,0 +1,109 @@ +package cn.piflow.bundle.jdbc + +import cn.piflow._ +import cn.piflow.conf._ +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil} + +class DamengWrite extends ConfigurableStop{ + + val authorEmail: String = "ygang@cnic.cn" + val description: String = "Write data into dameng database with jdbc" + val inportList: List[String] = List(Port.DefaultPort) + val outportList: List[String] = List(Port.DefaultPort) + + var url:String = _ + var user:String = _ + var password:String = _ + var dbtable:String = _ + var saveMode:String = _ + + def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + val jdbcDF = in.read() + + jdbcDF.write.format("jdbc") + .option("url", url) + .option("driver", "dm.jdbc.driver.DmDriver") + .option("user", user) + .option("password", password) + .option("dbtable", dbtable) + .mode(saveMode) + .save() + } + + def initialize(ctx: ProcessContext): Unit = { + + } + + override def setProperties(map: Map[String, Any]): Unit = { + url = MapUtil.get(map,"url").asInstanceOf[String] + user = MapUtil.get(map,"user").asInstanceOf[String] + password = MapUtil.get(map,"password").asInstanceOf[String] + dbtable = MapUtil.get(map,"dbtable").asInstanceOf[String] + saveMode = MapUtil.get(map,"saveMode").asInstanceOf[String] + } + + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + var descriptor : List[PropertyDescriptor] = List() + val saveModeOption = Set("Append", "Overwrite", "Ignore") + + val url=new PropertyDescriptor() + .name("url") + .displayName("Url") + .description("The Url of dameng database") + .defaultValue("") + .required(true) + .example("jdbc:dm://127.0.0.1:5236/DAMENG") + descriptor = url :: descriptor + + + val user=new PropertyDescriptor() + .name("user") + .displayName("User") + .description("The user name of dameng") + .defaultValue("") + .required(true) + .example("") + descriptor = user :: descriptor + + val password=new PropertyDescriptor() + .name("password") + .displayName("Password") + .description("The password of dameng") + .defaultValue("") + .required(true) + .example("") + .sensitive(true) + descriptor = password :: descriptor + + val dbtable=new PropertyDescriptor() + .name("dbtable") + .displayName("DBTable") + .description("The table you want to write") + .defaultValue("") + .required(true) + .example("") + descriptor = dbtable :: descriptor + + val saveMode = new PropertyDescriptor() + .name("saveMode") + .displayName("SaveMode") + .description("The save mode for table") + .allowableValues(saveModeOption) + .defaultValue("Append") + .required(true) + .example("Append") + descriptor = saveMode :: descriptor + + descriptor + } + + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/jdbc/dameng.png") + } + + override def getGroup(): List[String] = { + List(StopGroup.JdbcGroup) + } + +} diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/TbaseRead.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/OpenTenBaseRead.scala similarity index 85% rename from piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/TbaseRead.scala rename to piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/OpenTenBaseRead.scala index 3f24de77..b90ffa6b 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/TbaseRead.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/OpenTenBaseRead.scala @@ -7,10 +7,10 @@ import cn.piflow.conf.util.{ImageUtil, MapUtil} import org.apache.spark.sql.SparkSession -class TbaseRead extends ConfigurableStop { +class OpenTenBaseRead extends ConfigurableStop { - val authorEmail: String = "bbbbbbyz1110@163.com" - val description: String = "Read data from Tbase database with jdbc" + val authorEmail: String = "ygang@cnic.cn" + val description: String = "Read data from OpenTenBase database with jdbc" val inportList: List[String] = List(Port.DefaultPort) val outportList: List[String] = List(Port.DefaultPort) @@ -55,8 +55,8 @@ class TbaseRead extends ConfigurableStop { val url=new PropertyDescriptor() .name("url") .displayName("Url") - .description("The Url of postgresql database") - .defaultValue("jdbc:postgresql://127.0.0.1:30004/tbase") + .description("The Url of OpenTenBase database") + .defaultValue("") .required(true) .example("jdbc:postgresql://127.0.0.1:30004/tbase") descriptor = url :: descriptor @@ -65,19 +65,19 @@ class TbaseRead extends ConfigurableStop { val user=new PropertyDescriptor() .name("user") .displayName("User") - .description("The user name of postgresql") - .defaultValue("tbase") + .description("The user name of OpenTenBase") + .defaultValue("") .required(true) - .example("tbase") + .example("") descriptor = user :: descriptor val password=new PropertyDescriptor() .name("password") .displayName("Password") - .description("The password of postgresql") + .description("The password of OpenTenBase") .defaultValue("") .required(true) - .example("123456") + .example("") .sensitive(true) descriptor = password :: descriptor @@ -96,7 +96,7 @@ class TbaseRead extends ConfigurableStop { .description("The table you want to read") .defaultValue("") .required(true) - .example("test") + .example("") descriptor = tableName :: descriptor descriptor } diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/TbaseWrite.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/OpenTenBaseWrite.scala similarity index 86% rename from piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/TbaseWrite.scala rename to piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/OpenTenBaseWrite.scala index 45a527d6..8cfa4a20 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/TbaseWrite.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/jdbc/OpenTenBaseWrite.scala @@ -9,10 +9,10 @@ import org.apache.spark.sql.{SaveMode, SparkSession} import java.util.Properties -class TbaseWrite extends ConfigurableStop{ +class OpenTenBaseWrite extends ConfigurableStop{ - val authorEmail: String = "bbbbbbyz1110@163.com" - val description: String = "Write data into Tbase database with jdbc" + val authorEmail: String = "ygang@cnic.cn" + val description: String = "Write data into OpenTenBase database with jdbc" val inportList: List[String] = List(Port.DefaultPort) val outportList: List[String] = List(Port.DefaultPort) @@ -54,8 +54,8 @@ class TbaseWrite extends ConfigurableStop{ val url=new PropertyDescriptor() .name("url") .displayName("Url") - .description("The Url of postgresql database") - .defaultValue("jdbc:postgresql://127.0.0.1:30004/tbase") + .description("The Url of OpenTenBase database") + .defaultValue("") .required(true) .example("jdbc:postgresql://127.0.0.1:30004/tbase") descriptor = url :: descriptor @@ -64,16 +64,16 @@ class TbaseWrite extends ConfigurableStop{ val user=new PropertyDescriptor() .name("user") .displayName("User") - .description("The user name of postgresql") - .defaultValue("tbase") + .description("The user name of OpenTenBase") + .defaultValue("") .required(true) - .example("tbase") + .example("") descriptor = user :: descriptor val password=new PropertyDescriptor() .name("password") .displayName("Password") - .description("The password of postgresql") + .description("The password of OpenTenBase") .defaultValue("") .required(true) .example("123456") From 5c60068e2d0cafef9ebb06ff5edadc0751b94c2a Mon Sep 17 00:00:00 2001 From: angy Date: Sun, 17 Dec 2023 14:53:59 +0800 Subject: [PATCH 28/68] ADD dameng png --- .../src/main/resources/icon/jdbc/dameng.png | Bin 46817 -> 94129 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/piflow-bundle/src/main/resources/icon/jdbc/dameng.png b/piflow-bundle/src/main/resources/icon/jdbc/dameng.png index f9bb7a8c09c9ddee145fc03185f46f5aa687a9ab..5a64c1f9b3722df5288c8d7d1651f90156fdda8d 100644 GIT binary patch literal 94129 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≠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 P;J@pd`Wg*twh{jaO|Q9t From 20af3f702be497005b0f0dbf92b886203fb65211 Mon Sep 17 00:00:00 2001 From: tianyao-0315 Date: Tue, 19 Mar 2024 15:10:04 +0800 Subject: [PATCH 29/68] #fix: update flow state to failed --- piflow-core/src/main/scala/cn/piflow/main.scala | 4 ++++ .../src/main/scala/cn/piflow/api/HTTPService.scala | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/piflow-core/src/main/scala/cn/piflow/main.scala b/piflow-core/src/main/scala/cn/piflow/main.scala index 7214b227..df2f69a8 100644 --- a/piflow-core/src/main/scala/cn/piflow/main.scala +++ b/piflow-core/src/main/scala/cn/piflow/main.scala @@ -734,6 +734,8 @@ class ProcessImpl(flow: Flow, runnerContext: Context, runner: Runner, parentProc catch { case e: Throwable => runnerListener.onJobFailed(pe.getContext()); + println("---------------performStreamingStop----update flow state failed!!!----------------") + runnerListener.onProcessFailed(processContext); throw e; } @@ -815,6 +817,8 @@ class ProcessImpl(flow: Flow, runnerContext: Context, runner: Runner, parentProc catch { case e: Throwable => runnerListener.onJobFailed(pe.getContext()); + println("---------------performStopByCheckpoint--------------update flow state failed!!!----------------") + runnerListener.onProcessFailed(processContext); throw e; } diff --git a/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala b/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala index 03938274..fad8c32f 100644 --- a/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala +++ b/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala @@ -82,8 +82,12 @@ object HTTPService extends DefaultJsonProtocol with Directives with SprayJsonSup val flowInfoMap = MapUtil.get(resultMap, "flow").asInstanceOf[Map[String, Any]] val flowState = MapUtil.get(flowInfoMap,"state").asInstanceOf[String] + println("----------------getFlowYarnInfo--------------------start") //yarn flow state val flowYarnInfoJson = API.getFlowYarnInfo(appID) + println("----------------getFlowYarnInfo--------------------finish") + println("----------------getFlowYarnInfo--------------------"+flowYarnInfoJson) + // val map = OptionUtil.getAny(JSON.parseFull(flowYarnInfoJson)).asInstanceOf[Map[String, Any]] val map = JsonUtil.jsonToMap(flowYarnInfoJson) val yanrFlowInfoMap = MapUtil.get(map, "app").asInstanceOf[Map[String, Any]] @@ -92,6 +96,7 @@ object HTTPService extends DefaultJsonProtocol with Directives with SprayJsonSup if (flowInfoMap.contains("state")) { + println("----------------flowInfoMap.state--------------------"+flowState) val checkState = StateUtil.FlowStateCheck(flowState, flowYarnState) if (checkState == true) { Future.successful(HttpResponse(SUCCESS_CODE, entity = result)) @@ -104,6 +109,7 @@ object HTTPService extends DefaultJsonProtocol with Directives with SprayJsonSup Future.successful(HttpResponse(SUCCESS_CODE, entity = result)) } } else if (yanrFlowInfoMap.contains("state")) { + println("----------------yanrFlowInfoMap.state--------------------"+flowYarnState) var flowInfoMap = Map[String, Any]() flowInfoMap += ("id" -> appID) flowInfoMap += ("name" -> name) From c20bba6187caff2f472ff3e937efa1d20c5c5591 Mon Sep 17 00:00:00 2001 From: tianyao-0315 Date: Wed, 20 Mar 2024 17:06:24 +0800 Subject: [PATCH 30/68] #feature:h2 database url can be customized --- .../main/scala/cn/piflow/util/H2Util.scala | 377 +++++++++--------- .../scala/cn/piflow/api/HTTPService.scala | 9 +- 2 files changed, 205 insertions(+), 181 deletions(-) diff --git a/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala b/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala index 8e922f29..b1e5afc1 100644 --- a/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala +++ b/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala @@ -26,10 +26,17 @@ object H2Util { val CREATE_SCHEDULE_TABLE = "create table if not exists schedule(id bigint auto_increment, scheduleId varchar(255), scheduleEntryId varchar(255), scheduleEntryType varchar(255))" val CREATE_PLUGIN_TABLE = "create table if not exists plugin (id varchar(255), name varchar(255), state varchar(255), createTime varchar(255), updateTime varchar(255))" val serverIP = ServerIpUtil.getServerIp() + ":" + PropertyUtil.getPropertyValue("h2.port") - val CONNECTION_URL = "jdbc:h2:tcp://" + serverIP + "/~/piflow;AUTO_SERVER=true" - var connection : Connection= null + var CONNECTION_URL = ""; + val h2Path: String = PropertyUtil.getPropertyValue("h2.path") + if (h2Path != null) { + CONNECTION_URL = "jdbc:h2:tcp://" + serverIP + "/~/piflow/" + h2Path + ";AUTO_SERVER=true;DB_CLOSE_ON_EXIT=FALSE" + } else { + CONNECTION_URL = "jdbc:h2:tcp://" + serverIP + "/~/piflow;AUTO_SERVER=true;DB_CLOSE_ON_EXIT=FALSE" + } +// val CONNECTION_URL = "jdbc:h2:tcp://" + serverIP + "/~/piflow;AUTO_SERVER=true" + var connection: Connection = null - try{ + try { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) @@ -42,12 +49,12 @@ object H2Util { statement.executeUpdate(CREATE_SCHEDULE_TABLE) statement.executeUpdate(CREATE_PLUGIN_TABLE) statement.close() - }catch { + } catch { case ex => println(ex) } - def getConnectionInstance() : Connection = { - if(connection == null){ + def getConnectionInstance(): Connection = { + if (connection == null) { Class.forName("org.h2.Driver") println(CONNECTION_URL) connection = DriverManager.getConnection(CONNECTION_URL) @@ -57,8 +64,8 @@ object H2Util { def cleanDatabase() = { - val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort",PropertyUtil.getPropertyValue("h2.port")).start() - try{ + val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", PropertyUtil.getPropertyValue("h2.port")).start() + try { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) @@ -71,9 +78,9 @@ object H2Util { statement.executeUpdate("drop table if exists plugin") statement.close() - } catch{ - case ex => println(ex) - }finally { + } catch { + case ex => println(ex) + } finally { h2Server.shutdown() } @@ -99,23 +106,24 @@ object H2Util { } }*/ - def addFlow(appId:String,pId:String, name:String)={ + def addFlow(appId: String, pId: String, name: String) = { val startTime = new Date().toString val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) statement.executeUpdate("insert into flow(id, pid, name) values('" + appId + "','" + pId + "','" + name + "')") statement.close() } - def updateFlowState(appId:String, state:String) = { + + def updateFlowState(appId: String, state: String) = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) val updateSql = "update flow set state='" + state + "' where id='" + appId + "'" println(updateSql) //update related stop stop when flow state is KILLED - if(state.equals(FlowState.KILLED)){ + if (state.equals(FlowState.KILLED)) { val startedStopList = getStartedStop(appId) startedStopList.foreach(stopName => { - updateStopState(appId,stopName,StopState.KILLED) + updateStopState(appId, stopName, StopState.KILLED) updateStopFinishedTime(appId, stopName, new Date().toString) }) } @@ -123,7 +131,8 @@ object H2Util { statement.executeUpdate(updateSql) statement.close() } - def updateFlowStartTime(appId:String, startTime:String) = { + + def updateFlowStartTime(appId: String, startTime: String) = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) val updateSql = "update flow set startTime='" + startTime + "' where id='" + appId + "'" @@ -131,7 +140,8 @@ object H2Util { statement.executeUpdate(updateSql) statement.close() } - def updateFlowFinishedTime(appId:String, endTime:String) = { + + def updateFlowFinishedTime(appId: String, endTime: String) = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) val updateSql = "update flow set endTime='" + endTime + "' where id='" + appId + "'" @@ -140,7 +150,7 @@ object H2Util { statement.close() } - def updateFlowGroupId(appId:String, groupId:String) = { + def updateFlowGroupId(appId: String, groupId: String) = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) val updateSql = "update flow set groupId='" + groupId + "' where id='" + appId + "'" @@ -158,12 +168,12 @@ object H2Util { statement.close() }*/ - def isFlowExist(appId : String) : Boolean = { + def isFlowExist(appId: String): Boolean = { var isExist = false val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) - val rs : ResultSet = statement.executeQuery("select * from flow where id='" + appId +"'") - while(rs.next()){ + val rs: ResultSet = statement.executeQuery("select * from flow where id='" + appId + "'") + while (rs.next()) { val id = rs.getString("id") println("Flow id exist: " + id) isExist = true @@ -177,8 +187,8 @@ object H2Util { var state = "" val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) - val rs : ResultSet = statement.executeQuery("select * from flow where id='" + appId +"'") - while(rs.next()){ + val rs: ResultSet = statement.executeQuery("select * from flow where id='" + appId + "'") + while (rs.next()) { state = rs.getString("state") //println("id:" + rs.getString("id") + "\tname:" + rs.getString("name") + "\tstate:" + rs.getString("state")) } @@ -187,12 +197,12 @@ object H2Util { state } - def getFlowProcessId(appId:String) : String = { + def getFlowProcessId(appId: String): String = { var pid = "" val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) - val rs : ResultSet = statement.executeQuery("select pid from flow where id='" + appId +"'") - while(rs.next()){ + val rs: ResultSet = statement.executeQuery("select pid from flow where id='" + appId + "'") + while (rs.next()) { pid = rs.getString("pid") } rs.close() @@ -200,7 +210,7 @@ object H2Util { pid } - def getFlowInfo(appId:String) : String = { + def getFlowInfo(appId: String): String = { /*val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) var flowInfo = "" @@ -240,16 +250,16 @@ object H2Util { JsonUtil.format(JsonUtil.toJson(flowInfoMap)) } - def getFlowInfoMap(appId:String) : Map[String, Any] = { + def getFlowInfoMap(appId: String): Map[String, Any] = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) var flowInfoMap = Map[String, Any]() //get flow basic info - val flowRS : ResultSet = statement.executeQuery("select * from flow where id='" + appId +"'") - while (flowRS.next()){ - val progress = getFlowProgressPercent(appId:String) + val flowRS: ResultSet = statement.executeQuery("select * from flow where id='" + appId + "'") + while (flowRS.next()) { + val progress = getFlowProgressPercent(appId: String) flowInfoMap += ("id" -> flowRS.getString("id")) flowInfoMap += ("pid" -> flowRS.getString("pid")) flowInfoMap += ("name" -> flowRS.getString("name")) @@ -261,9 +271,9 @@ object H2Util { flowRS.close() //get flow stops info - var stopList:List[Map[String, Any]] = List() - val rs : ResultSet = statement.executeQuery("select * from stop where flowId='" + appId +"'") - while(rs.next()){ + var stopList: List[Map[String, Any]] = List() + val rs: ResultSet = statement.executeQuery("select * from stop where flowId='" + appId + "'") + while (rs.next()) { var stopMap = Map[String, Any]() stopMap += ("name" -> rs.getString("name")) stopMap += ("state" -> rs.getString("state")) @@ -283,62 +293,62 @@ object H2Util { Map[String, Any]("flow" -> flowInfoMap) } - def getFlowProgressPercent(appId:String) : String = { + def getFlowProgressPercent(appId: String): String = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) var stopCount = 0 var completedStopCount = 0 - val totalRS : ResultSet = statement.executeQuery("select count(*) as stopCount from stop where flowId='" + appId + "'") - while(totalRS.next()){ + val totalRS: ResultSet = statement.executeQuery("select count(*) as stopCount from stop where flowId='" + appId + "'") + while (totalRS.next()) { stopCount = totalRS.getInt("stopCount") //println("stopCount:" + stopCount) } totalRS.close() - val completedRS : ResultSet = statement.executeQuery("select count(*) as completedStopCount from stop where flowId='" + appId +"' and state='" + StopState.COMPLETED + "'") - while(completedRS.next()){ + val completedRS: ResultSet = statement.executeQuery("select count(*) as completedStopCount from stop where flowId='" + appId + "' and state='" + StopState.COMPLETED + "'") + while (completedRS.next()) { completedStopCount = completedRS.getInt("completedStopCount") //println("completedStopCount:" + completedStopCount) } completedRS.close() - val flowRS : ResultSet = statement.executeQuery("select * from flow where id='" + appId +"'") + val flowRS: ResultSet = statement.executeQuery("select * from flow where id='" + appId + "'") var flowState = "" - while (flowRS.next()){ + while (flowRS.next()) { flowState = flowRS.getString("state") } flowRS.close() statement.close() - val progress:Double = completedStopCount.asInstanceOf[Double] / stopCount * 100 - if(flowState.equals(FlowState.COMPLETED)){ + val progress: Double = completedStopCount.asInstanceOf[Double] / stopCount * 100 + if (flowState.equals(FlowState.COMPLETED)) { "100" - }else{ + } else { progress.toString } } - def getFlowProgress(appId:String) : String = { + def getFlowProgress(appId: String): String = { val progress = getFlowProgressPercent(appId) val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) - val flowRS : ResultSet = statement.executeQuery("select * from flow where id='" + appId +"'") + val flowRS: ResultSet = statement.executeQuery("select * from flow where id='" + appId + "'") var id = "" var name = "" var state = "" - while (flowRS.next()){ + while (flowRS.next()) { id = flowRS.getString("id") - name = flowRS.getString("name") + name = flowRS.getString("name") state = flowRS.getString("state") } flowRS.close() val json = ("FlowInfo" -> - ("appId" -> id)~ + ("appId" -> id) ~ ("name" -> name) ~ ("state" -> state) ~ ("progress" -> progress.toString)) @@ -347,13 +357,14 @@ object H2Util { } //Stop related API - def addStop(appId:String,name:String)={ + def addStop(appId: String, name: String) = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) statement.executeUpdate("insert into stop(flowId, name) values('" + appId + "','" + name + "')") statement.close() } - def updateStopState(appId:String, name:String, state:String) = { + + def updateStopState(appId: String, name: String, state: String) = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) val updateSql = "update stop set state='" + state + "' where flowId='" + appId + "' and name='" + name + "'" @@ -362,7 +373,7 @@ object H2Util { statement.close() } - def updateStopStartTime(appId:String, name:String, startTime:String) = { + def updateStopStartTime(appId: String, name: String, startTime: String) = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) val updateSql = "update stop set startTime='" + startTime + "' where flowId='" + appId + "' and name='" + name + "'" @@ -371,7 +382,7 @@ object H2Util { statement.close() } - def updateStopFinishedTime(appId:String, name:String, endTime:String) = { + def updateStopFinishedTime(appId: String, name: String, endTime: String) = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) val updateSql = "update stop set endTime='" + endTime + "' where flowId='" + appId + "' and name='" + name + "'" @@ -380,13 +391,13 @@ object H2Util { statement.close() } - def getStartedStop(appId:String) : List[String] = { + def getStartedStop(appId: String): List[String] = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) - var stopList:List[String] = List() - val rs : ResultSet = statement.executeQuery("select * from stop where flowId='" + appId +"' and state = '" + StopState.STARTED + "'") - while(rs.next()){ + var stopList: List[String] = List() + val rs: ResultSet = statement.executeQuery("select * from stop where flowId='" + appId + "' and state = '" + StopState.STARTED + "'") + while (rs.next()) { stopList = rs.getString("name") +: stopList } @@ -396,25 +407,27 @@ object H2Util { } // Throughput related API - def addThroughput(appId:String, stopName:String, portName:String, count:Long) = { + def addThroughput(appId: String, stopName: String, portName: String, count: Long) = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) statement.executeUpdate("insert into thoughput(flowId, stopName, portName, count) values('" + appId + "','" + stopName + "','" + portName + "','" + count + "')") statement.close() } - def getThroughput(appId:String, stopName:String, portName:String) = { + + def getThroughput(appId: String, stopName: String, portName: String) = { var count = "" val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) - val rs : ResultSet = statement.executeQuery("select count from thoughput where flowId='" + appId +"' and stopName = '" + stopName + "' and portName = '" + portName + "'") - while(rs.next()){ + val rs: ResultSet = statement.executeQuery("select count from thoughput where flowId='" + appId + "' and stopName = '" + stopName + "' and portName = '" + portName + "'") + while (rs.next()) { count = rs.getString("count") } rs.close() statement.close() count } - def updateThroughput(appId:String, stopName:String, portName:String, count:Long) = { + + def updateThroughput(appId: String, stopName: String, portName: String, count: Long) = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) val updateSql = "update thoughput set count='" + count + "' where flowId='" + appId + "' and stopName='" + stopName + "' and portName='" + portName + "'" @@ -423,14 +436,15 @@ object H2Util { } //Group related api - def addGroup(groupId:String, name:String, childCount: Int)={ + def addGroup(groupId: String, name: String, childCount: Int) = { val startTime = new Date().toString val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) - statement.executeUpdate("insert into flowGroup(id, name, childCount) values('" + groupId + "','" + name + "','" + childCount + "')") + statement.executeUpdate("insert into flowGroup(id, name, childCount) values('" + groupId + "','" + name + "','" + childCount + "')") statement.close() } - def updateGroupState(groupId:String, state:String) = { + + def updateGroupState(groupId: String, state: String) = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) val updateSql = "update flowGroup set state='" + state + "' where id='" + groupId + "'" @@ -447,7 +461,8 @@ object H2Util { statement.executeUpdate(updateSql) statement.close() } - def updateGroupStartTime(groupId:String, startTime:String) = { + + def updateGroupStartTime(groupId: String, startTime: String) = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) val updateSql = "update flowGroup set startTime='" + startTime + "' where id='" + groupId + "'" @@ -455,7 +470,8 @@ object H2Util { statement.executeUpdate(updateSql) statement.close() } - def updateGroupFinishedTime(groupId:String, endTime:String) = { + + def updateGroupFinishedTime(groupId: String, endTime: String) = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) val updateSql = "update flowGroup set endTime='" + endTime + "' where id='" + groupId + "'" @@ -463,7 +479,8 @@ object H2Util { statement.executeUpdate(updateSql) statement.close() } - def updateGroupParent(groupId:String, parentId:String) = { + + def updateGroupParent(groupId: String, parentId: String) = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) val updateSql = "update flowGroup set parentId='" + parentId + "' where id='" + groupId + "'" @@ -472,51 +489,51 @@ object H2Util { statement.close() } - def getGroupState(groupId:String) : String = { + def getGroupState(groupId: String): String = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) var groupState = "" - val groupRS : ResultSet = statement.executeQuery("select state from flowGroup where id='" + groupId +"'") - if (groupRS.next()){ + val groupRS: ResultSet = statement.executeQuery("select state from flowGroup where id='" + groupId + "'") + if (groupRS.next()) { groupState = groupRS.getString("state") } return groupState } - def isGroupChildError( groupId : String) : Boolean = { + def isGroupChildError(groupId: String): Boolean = { - if(getGroupChildByStatus(groupId, GroupState.FAILED).size > 0 || getGroupChildByStatus(groupId, GroupState.KILLED).size > 0) + if (getGroupChildByStatus(groupId, GroupState.FAILED).size > 0 || getGroupChildByStatus(groupId, GroupState.KILLED).size > 0) return true - else if(getFlowChildByStatus(groupId, FlowState.FAILED).size > 0 || getFlowChildByStatus(groupId, FlowState.KILLED).size > 0) + else if (getFlowChildByStatus(groupId, FlowState.FAILED).size > 0 || getFlowChildByStatus(groupId, FlowState.KILLED).size > 0) return true else return false } - def isGroupChildRunning( groupId : String) : Boolean = { + def isGroupChildRunning(groupId: String): Boolean = { - if(getGroupChildByStatus(groupId, GroupState.STARTED).size > 0 ) + if (getGroupChildByStatus(groupId, GroupState.STARTED).size > 0) return true - else if(getFlowChildByStatus(groupId, FlowState.STARTED).size > 0 ) + else if (getFlowChildByStatus(groupId, FlowState.STARTED).size > 0) return true else return false } - def getGroupChildByStatus(groupId: String, status : String) : List[String] = { + def getGroupChildByStatus(groupId: String, status: String): List[String] = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) var failedList = List[String]() //group children state - val groupRS : ResultSet = statement.executeQuery("select * from flowGroup where parentId='" + groupId +"'") - breakable{ - while (groupRS.next()){ + val groupRS: ResultSet = statement.executeQuery("select * from flowGroup where parentId='" + groupId + "'") + breakable { + while (groupRS.next()) { val groupName = groupRS.getString("name") val groupState = groupRS.getString("state") - if(groupState == status){ + if (groupState == status) { failedList = groupName +: failedList } } @@ -525,18 +542,19 @@ object H2Util { statement.close() return failedList } - def getFlowChildByStatus(groupId: String, status : String) : List[String] = { + + def getFlowChildByStatus(groupId: String, status: String): List[String] = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) var failedList = List[String]() //flow children state - val rs : ResultSet = statement.executeQuery("select * from flow where groupId='" + groupId +"'") - breakable{ - while(rs.next()){ + val rs: ResultSet = statement.executeQuery("select * from flow where groupId='" + groupId + "'") + breakable { + while (rs.next()) { val flowName = rs.getString("name") val flowState = rs.getString("state") - if(flowState == status){ + if (flowState == status) { failedList = flowName +: failedList } } @@ -547,7 +565,7 @@ object H2Util { return failedList } - def getFlowGroupInfo(groupId:String) : String = { + def getFlowGroupInfo(groupId: String): String = { val flowGroupInfoMap = getGroupInfoMap(groupId) JsonUtil.format(JsonUtil.toJson(flowGroupInfoMap)) @@ -555,15 +573,15 @@ object H2Util { } //TODO need to get group - def getGroupInfoMap(groupId:String) : Map[String, Any] = { + def getGroupInfoMap(groupId: String): Map[String, Any] = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) var flowGroupInfoMap = Map[String, Any]() - val flowGroupRS : ResultSet = statement.executeQuery("select * from flowGroup where id='" + groupId +"'") - while (flowGroupRS.next()){ + val flowGroupRS: ResultSet = statement.executeQuery("select * from flowGroup where id='" + groupId + "'") + while (flowGroupRS.next()) { flowGroupInfoMap += ("id" -> flowGroupRS.getString("id")) flowGroupInfoMap += ("name" -> flowGroupRS.getString("name")) @@ -573,9 +591,9 @@ object H2Util { } flowGroupRS.close() - var groupList:List[Map[String, Any]] = List() - val childGroupRS : ResultSet = statement.executeQuery("select * from flowGroup where parentId='" + groupId +"'") - while (childGroupRS.next()){ + var groupList: List[Map[String, Any]] = List() + val childGroupRS: ResultSet = statement.executeQuery("select * from flowGroup where parentId='" + groupId + "'") + while (childGroupRS.next()) { val childGroupId = childGroupRS.getString("id") val childGroupMapInfo = getGroupInfoMap(childGroupId) groupList = childGroupMapInfo +: groupList @@ -583,9 +601,9 @@ object H2Util { childGroupRS.close() flowGroupInfoMap += ("groups" -> groupList) - var flowList:List[Map[String, Any]] = List() - val flowRS : ResultSet = statement.executeQuery("select * from flow where groupId='" + groupId +"'") - while (flowRS.next()){ + var flowList: List[Map[String, Any]] = List() + val flowRS: ResultSet = statement.executeQuery("select * from flow where groupId='" + groupId + "'") + while (flowRS.next()) { val appId = flowRS.getString("id") flowList = getFlowInfoMap(appId) +: flowList } @@ -595,11 +613,10 @@ object H2Util { statement.close() - Map[String, Any]("group" -> flowGroupInfoMap) } - def getGroupProgressPercent(groupId:String) : String = { + def getGroupProgressPercent(groupId: String): String = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) @@ -608,29 +625,29 @@ object H2Util { var completedGroupCount = 0 var completedFlowCount = 0 - val groupRSALL : ResultSet = statement.executeQuery("select * from flowGroup where id='" + groupId +"'") + val groupRSALL: ResultSet = statement.executeQuery("select * from flowGroup where id='" + groupId + "'") var groupState = "" - while (groupRSALL.next()){ + while (groupRSALL.next()) { groupState = groupRSALL.getString("state") childCount = groupRSALL.getInt("childCount") } groupRSALL.close() - if(groupState.equals(FlowState.COMPLETED)){ + if (groupState.equals(FlowState.COMPLETED)) { statement.close() return "100" - }else{ + } else { - val completedGroupRS : ResultSet = statement.executeQuery("select count(*) as completedGroupCount from flowGroup where parentId='" + groupId +"' and state='" + GroupState.COMPLETED+ "'") - while(completedGroupRS.next()){ + val completedGroupRS: ResultSet = statement.executeQuery("select count(*) as completedGroupCount from flowGroup where parentId='" + groupId + "' and state='" + GroupState.COMPLETED + "'") + while (completedGroupRS.next()) { completedGroupCount = completedGroupRS.getInt("completedGroupCount") println("completedGroupCount:" + completedGroupCount) } completedGroupRS.close() - val completedFlowRS : ResultSet = statement.executeQuery("select count(*) as completedFlowCount from flow where GroupId='" + groupId +"' and state='" + FlowState.COMPLETED + "'") - while(completedFlowRS.next()){ + val completedFlowRS: ResultSet = statement.executeQuery("select count(*) as completedFlowCount from flow where GroupId='" + groupId + "' and state='" + FlowState.COMPLETED + "'") + while (completedFlowRS.next()) { completedFlowCount = completedFlowRS.getInt("completedFlowCount") println("completedFlowCount:" + completedFlowCount) } @@ -638,7 +655,7 @@ object H2Util { statement.close() - val progress:Double = (completedFlowCount.asInstanceOf[Double] + completedGroupCount.asInstanceOf[Double])/ childCount * 100 + val progress: Double = (completedFlowCount.asInstanceOf[Double] + completedGroupCount.asInstanceOf[Double]) / childCount * 100 return progress.toString } @@ -736,36 +753,36 @@ object H2Util { Map[String, Any]("project" -> projectInfoMap) }*/ - def addFlag(item:String, flag:Int) : Unit = { + def addFlag(item: String, flag: Int): Unit = { val createTime = new Date().toString val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) - statement.executeUpdate("insert into configFlag(item, flag, createTime) values('" + item + "','" + flag + "','" + createTime +"')") + statement.executeUpdate("insert into configFlag(item, flag, createTime) values('" + item + "','" + flag + "','" + createTime + "')") statement.close() } - def getFlag(item : String) : Int = { + def getFlag(item: String): Int = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) var flag = 0 - val flowGroupRS : ResultSet = statement.executeQuery("select flag from configFlag where item='" + item +"'") - if (flowGroupRS.next()){ + val flowGroupRS: ResultSet = statement.executeQuery("select flag from configFlag where item='" + item + "'") + if (flowGroupRS.next()) { flag = flowGroupRS.getInt("flag") } return flag } - def addScheduleInstance(scheduleId : String, cronExpression : String, startDate : String, endDate : String, state : String): Unit ={ + def addScheduleInstance(scheduleId: String, cronExpression: String, startDate: String, endDate: String, state: String): Unit = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) val time = new Date().toString - statement.executeUpdate("insert into scheduleInstance(id, cronExpression, startDate, endDate, state, createTime, updateTime) values('" + scheduleId + "','" + cronExpression + "','" + startDate + "','" + endDate + "','" + state + "','" + time + "','" + time + "')") + statement.executeUpdate("insert into scheduleInstance(id, cronExpression, startDate, endDate, state, createTime, updateTime) values('" + scheduleId + "','" + cronExpression + "','" + startDate + "','" + endDate + "','" + state + "','" + time + "','" + time + "')") statement.close() } - def updateScheduleInstanceStatus(scheduleId : String, state : String) = { + def updateScheduleInstanceStatus(scheduleId: String, state: String) = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) val time = new Date().toString @@ -776,15 +793,15 @@ object H2Util { } def getNeedStopSchedule(): List[String] = { - var resultList : List[String]= List() + var resultList: List[String] = List() val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) val nowDate: String = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) - val updateSql = "select id from scheduleInstance where state = '" + ScheduleState.STARTED + "' and endDate != '' and endDate <= '" + nowDate + "'" + val updateSql = "select id from scheduleInstance where state = '" + ScheduleState.STARTED + "' and endDate != '' and endDate <= '" + nowDate + "'" println(updateSql) - val scheduleRS : ResultSet = statement.executeQuery(updateSql) - while (scheduleRS.next()){ + val scheduleRS: ResultSet = statement.executeQuery(updateSql) + while (scheduleRS.next()) { val id = scheduleRS.getString("id") resultList = id +: resultList @@ -794,23 +811,23 @@ object H2Util { resultList } - def addScheduleEntry(scheduleId : String, scheduleEntryId : String, scheduleEntryType : String): Unit ={ + def addScheduleEntry(scheduleId: String, scheduleEntryId: String, scheduleEntryType: String): Unit = { val createTime = new Date().toString val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) - statement.executeUpdate("insert into schedule(scheduleId, scheduleEntryId, scheduleEntryType) values('" + scheduleId + "','" + scheduleEntryId + "','" + scheduleEntryType +"')") + statement.executeUpdate("insert into schedule(scheduleId, scheduleEntryId, scheduleEntryType) values('" + scheduleId + "','" + scheduleEntryId + "','" + scheduleEntryType + "')") statement.close() } - def getScheduleInfo(scheduleId: String) : String = { + def getScheduleInfo(scheduleId: String): String = { val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) var scheduleInfoMap = Map[String, Any]() //get flow basic info - val scheduleInstanceRS : ResultSet = statement.executeQuery("select * from scheduleInstance where id='" + scheduleId +"'") - while (scheduleInstanceRS.next()){ + val scheduleInstanceRS: ResultSet = statement.executeQuery("select * from scheduleInstance where id='" + scheduleId + "'") + while (scheduleInstanceRS.next()) { scheduleInfoMap += ("id" -> scheduleInstanceRS.getString("id")) scheduleInfoMap += ("cronExpression" -> scheduleInstanceRS.getString("cronExpression")) @@ -822,9 +839,9 @@ object H2Util { } scheduleInstanceRS.close() - var scheduleEntryList : List[Map[String, String]] = List() - val scheduleRS : ResultSet = statement.executeQuery("select * from schedule where scheduleId='" + scheduleId +"'") - while (scheduleRS.next()){ + var scheduleEntryList: List[Map[String, String]] = List() + val scheduleRS: ResultSet = statement.executeQuery("select * from schedule where scheduleId='" + scheduleId + "'") + while (scheduleRS.next()) { var scheduleEntryMap = Map[String, String]() scheduleEntryMap += ("scheduleEntryId" -> scheduleRS.getString("scheduleEntryId")) @@ -839,7 +856,7 @@ object H2Util { } - def getStartedSchedule() : List[String] ={ + def getStartedSchedule(): List[String] = { var scheduleList = List[String]() val statement = getConnectionInstance().createStatement() @@ -847,8 +864,8 @@ object H2Util { var scheduleInfoMap = Map[String, Any]() //get flow basic info - val scheduleInstanceRS : ResultSet = statement.executeQuery("select * from scheduleInstance where state='" + ScheduleState.STARTED +"'") - while (scheduleInstanceRS.next()){ + val scheduleInstanceRS: ResultSet = statement.executeQuery("select * from scheduleInstance where state='" + ScheduleState.STARTED + "'") + while (scheduleInstanceRS.next()) { scheduleList = scheduleInstanceRS.getString("id") +: scheduleList } @@ -856,27 +873,27 @@ object H2Util { scheduleList } - def addPlugin(name:String)={ + def addPlugin(name: String) = { var id = "" var state = "" val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) - val rs : ResultSet = statement.executeQuery("select * from plugin where name='" + name +"'") - if(!rs.isBeforeFirst){ + val rs: ResultSet = statement.executeQuery("select * from plugin where name='" + name + "'") + if (!rs.isBeforeFirst) { id = IdGenerator.uuid() val time = new Date().toString - statement.executeUpdate("insert into plugin(id, name, state, createTime, updateTime) values('" + id + "','" + name + "','" + PluginState.ON + "','" + time + "','" + time + "')") + statement.executeUpdate("insert into plugin(id, name, state, createTime, updateTime) values('" + id + "','" + name + "','" + PluginState.ON + "','" + time + "','" + time + "')") state = PluginState.ON - }else{ + } else { - breakable{ - while(rs.next()){ + breakable { + while (rs.next()) { id = rs.getString("id") state = rs.getString("state") val time = new Date().toString - if(state == PluginState.OFF){ - val updateSql = "update plugin set state='" + PluginState.ON + "'," + "updateTime='" + time +"' where name='" + name + "'" + if (state == PluginState.OFF) { + val updateSql = "update plugin set state='" + PluginState.ON + "'," + "updateTime='" + time + "' where name='" + name + "'" statement.executeUpdate(updateSql) state = PluginState.ON break @@ -890,22 +907,22 @@ object H2Util { id } - def removePlugin(name:String)={ + def removePlugin(name: String) = { var state = "" val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) - val rs : ResultSet = statement.executeQuery("select * from plugin where name='" + name +"'") - if(!rs.isBeforeFirst){ + val rs: ResultSet = statement.executeQuery("select * from plugin where name='" + name + "'") + if (!rs.isBeforeFirst) { state = PluginState.NONE - }else{ + } else { - breakable{ - while(rs.next()){ + breakable { + while (rs.next()) { state = rs.getString("state") val time = new Date().toString - if(state == PluginState.ON){ - val updateSql = "update plugin set state='" + PluginState.OFF + "'," + "updateTime='" + time +"' where name='" + name + "'" + if (state == PluginState.ON) { + val updateSql = "update plugin set state='" + PluginState.OFF + "'," + "updateTime='" + time + "' where name='" + name + "'" statement.executeUpdate(updateSql) state = PluginState.OFF break @@ -918,18 +935,18 @@ object H2Util { state } - def getPluginInfo(pluginId : String) : String ={ + def getPluginInfo(pluginId: String): String = { val pluginMap = getPluginInfoMap(pluginId) JsonUtil.format(JsonUtil.toJson(pluginMap)) } - def getPluginInfoMap(pluginId : String) : Map[String, String] ={ + def getPluginInfoMap(pluginId: String): Map[String, String] = { var pluginMap = Map[String, String]() val statement = getConnectionInstance().createStatement() - val rs : ResultSet = statement.executeQuery("select * from plugin where id='" + pluginId + "'") - while(rs.next()){ + val rs: ResultSet = statement.executeQuery("select * from plugin where id='" + pluginId + "'") + while (rs.next()) { val path = PropertyUtil.getClassPath() + "/" + rs.getString("name") pluginMap += ("id" -> rs.getString("id")) @@ -944,12 +961,12 @@ object H2Util { pluginMap } - def getPluginOn() : List[String] ={ + def getPluginOn(): List[String] = { var pluginList = List[String]() val statement = getConnectionInstance().createStatement() - val rs : ResultSet = statement.executeQuery("select * from plugin where state='" + PluginState.ON + "'") - while(rs.next()){ + val rs: ResultSet = statement.executeQuery("select * from plugin where state='" + PluginState.ON + "'") + while (rs.next()) { pluginList = rs.getString("name") +: pluginList } rs.close() @@ -958,27 +975,27 @@ object H2Util { } - def addSparkJar(sparkJarName:String)={ + def addSparkJar(sparkJarName: String) = { var id = "" var state = "" val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) - val rs : ResultSet = statement.executeQuery("select * from sparkJar where name='" + sparkJarName +"'") - if(!rs.isBeforeFirst){ + val rs: ResultSet = statement.executeQuery("select * from sparkJar where name='" + sparkJarName + "'") + if (!rs.isBeforeFirst) { id = IdGenerator.uuid() val time = new Date().toString - statement.executeUpdate("insert into sparkJar(id, name, state, createTime, updateTime) values('" + id + "','" + sparkJarName + "','" + PluginState.ON + "','" + time + "','" + time + "')") + statement.executeUpdate("insert into sparkJar(id, name, state, createTime, updateTime) values('" + id + "','" + sparkJarName + "','" + PluginState.ON + "','" + time + "','" + time + "')") state = SparkJarState.ON - }else{ + } else { - breakable{ - while(rs.next()){ + breakable { + while (rs.next()) { id = rs.getString("id") state = rs.getString("state") val time = new Date().toString - if(state == SparkJarState.OFF){ - val updateSql = "update sparkJar set state='" + SparkJarState.ON + "'," + "updateTime='" + time +"' where name='" + sparkJarName + "'" + if (state == SparkJarState.OFF) { + val updateSql = "update sparkJar set state='" + SparkJarState.ON + "'," + "updateTime='" + time + "' where name='" + sparkJarName + "'" statement.executeUpdate(updateSql) state = SparkJarState.ON break @@ -992,22 +1009,22 @@ object H2Util { id } - def removeSparkJar(sparkJarId:String) : String={ + def removeSparkJar(sparkJarId: String): String = { var state = "" val statement = getConnectionInstance().createStatement() statement.setQueryTimeout(QUERY_TIME) - val rs : ResultSet = statement.executeQuery("select * from sparkJar where id='" + sparkJarId +"'") - if(!rs.isBeforeFirst){ + val rs: ResultSet = statement.executeQuery("select * from sparkJar where id='" + sparkJarId + "'") + if (!rs.isBeforeFirst) { state = SparkJarState.NONE - }else{ + } else { - breakable{ - while(rs.next()){ + breakable { + while (rs.next()) { state = rs.getString("state") val time = new Date().toString - if(state == SparkJarState.ON){ - val updateSql = "update sparkJar set state='" + SparkJarState.OFF + "'," + "updateTime='" + time +"' where id='" + sparkJarId + "'" + if (state == SparkJarState.ON) { + val updateSql = "update sparkJar set state='" + SparkJarState.OFF + "'," + "updateTime='" + time + "' where id='" + sparkJarId + "'" statement.executeUpdate(updateSql) state = SparkJarState.OFF break @@ -1020,18 +1037,18 @@ object H2Util { state } - def getSparkJarInfo(sparkJarId : String) : String ={ + def getSparkJarInfo(sparkJarId: String): String = { val sparkJarMap = getSparkJarInfoMap(sparkJarId) JsonUtil.format(JsonUtil.toJson(sparkJarMap)) } - def getSparkJarInfoMap(sparkJarId : String) : Map[String, String] ={ + def getSparkJarInfoMap(sparkJarId: String): Map[String, String] = { var sparkJarMap = Map[String, String]() val statement = getConnectionInstance().createStatement() - val rs : ResultSet = statement.executeQuery("select * from sparkJar where id='" + sparkJarId + "'") - while(rs.next()){ + val rs: ResultSet = statement.executeQuery("select * from sparkJar where id='" + sparkJarId + "'") + while (rs.next()) { val path = PropertyUtil.getSpartJarPath() + "/" + rs.getString("name") sparkJarMap += ("id" -> rs.getString("id")) @@ -1046,12 +1063,12 @@ object H2Util { sparkJarMap } - def getSparkJarOn() : List[String] ={ + def getSparkJarOn(): List[String] = { var pluginList = List[String]() val statement = getConnectionInstance().createStatement() - val rs : ResultSet = statement.executeQuery("select * from sparkJar where state='" + SparkJarState.ON + "'") - while(rs.next()){ + val rs: ResultSet = statement.executeQuery("select * from sparkJar where state='" + SparkJarState.ON + "'") + while (rs.next()) { pluginList = rs.getString("name") +: pluginList } rs.close() @@ -1084,7 +1101,7 @@ object H2Util { case ex => println(ex) }*/ val needStopSchedule = H2Util.getNeedStopSchedule() - if (args.size != 1){ + if (args.size != 1) { println("Error args!!! Please enter Clean or UpdateToVersion6") } /*val operation = args(0) diff --git a/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala b/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala index fad8c32f..21c1c11a 100644 --- a/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala +++ b/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala @@ -910,7 +910,14 @@ object Main { val ip = InetAddress.getLocalHost.getHostAddress // Create the Flyway instance val flyway: Flyway = new Flyway(); - var url = "jdbc:h2:tcp://" + ip + ":" + PropertyUtil.getPropertyValue("h2.port") + "/~/piflow" + val h2Path: String = PropertyUtil.getPropertyValue("h2.path") + var url: String = "" + if (h2Path != null) { + url = "jdbc:h2:tcp://" + ip + ":" + PropertyUtil.getPropertyValue("h2.port") + "/~/piflow/" + h2Path + } else { + url = "jdbc:h2:tcp://" + ip + ":" + PropertyUtil.getPropertyValue("h2.port") + "/~/piflow" + } +// var url = "jdbc:h2:tcp://" + ip + ":" + PropertyUtil.getPropertyValue("h2.port") + "/~/piflow" // Point it to the database flyway.setDataSource(url, null, null); flyway.setLocations("db/migrations"); From fdc70029f999d229441f996295174ab5a9fafec8 Mon Sep 17 00:00:00 2001 From: tianyao-0315 Date: Wed, 20 Mar 2024 17:45:51 +0800 Subject: [PATCH 31/68] #feature:h2 database url can be customized --- piflow-core/src/main/scala/cn/piflow/util/H2Util.scala | 2 +- piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala b/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala index b1e5afc1..b3a931d3 100644 --- a/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala +++ b/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala @@ -28,7 +28,7 @@ object H2Util { val serverIP = ServerIpUtil.getServerIp() + ":" + PropertyUtil.getPropertyValue("h2.port") var CONNECTION_URL = ""; val h2Path: String = PropertyUtil.getPropertyValue("h2.path") - if (h2Path != null) { + if (h2Path != null && h2Path.nonEmpty) { CONNECTION_URL = "jdbc:h2:tcp://" + serverIP + "/~/piflow/" + h2Path + ";AUTO_SERVER=true;DB_CLOSE_ON_EXIT=FALSE" } else { CONNECTION_URL = "jdbc:h2:tcp://" + serverIP + "/~/piflow;AUTO_SERVER=true;DB_CLOSE_ON_EXIT=FALSE" diff --git a/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala b/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala index 21c1c11a..b769c630 100644 --- a/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala +++ b/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala @@ -912,7 +912,7 @@ object Main { val flyway: Flyway = new Flyway(); val h2Path: String = PropertyUtil.getPropertyValue("h2.path") var url: String = "" - if (h2Path != null) { + if (h2Path != null && h2Path.nonEmpty) { url = "jdbc:h2:tcp://" + ip + ":" + PropertyUtil.getPropertyValue("h2.port") + "/~/piflow/" + h2Path } else { url = "jdbc:h2:tcp://" + ip + ":" + PropertyUtil.getPropertyValue("h2.port") + "/~/piflow" From 047c46cf2d6d7bf2d644899d7353c9c36bc10e41 Mon Sep 17 00:00:00 2001 From: tianyao-0315 Date: Thu, 28 Mar 2024 11:17:29 +0800 Subject: [PATCH 32/68] #init unstructured data parser:.pdf/ .html/ .image/ ./docx/ .pptx --- piflow-bundle/pom.xml | 28 +++ .../icon/unstructured/DocxParser.png | Bin 0 -> 8464 bytes .../icon/unstructured/HtmlParser.png | Bin 0 -> 7328 bytes .../icon/unstructured/ImageParser.png | Bin 0 -> 5326 bytes .../resources/icon/unstructured/PdfParser.png | Bin 0 -> 6919 bytes .../icon/unstructured/PptxParser.png | Bin 0 -> 5916 bytes .../bundle/unstructured/DocxParser.scala | 163 +++++++++++++++++ .../bundle/unstructured/HtmlParser.scala | 165 +++++++++++++++++ .../bundle/unstructured/ImageParser.scala | 162 +++++++++++++++++ .../bundle/unstructured/PdfParser.scala | 162 +++++++++++++++++ .../bundle/unstructured/PptxParser.scala | 172 ++++++++++++++++++ .../cn/piflow/conf/util/ProcessUtil.scala | 42 +++++ .../piflow/conf/util/UnstructuredUtils.scala | 16 ++ .../main/scala/cn/piflow/util/FileUtil.scala | 50 ++++- .../main/scala/cn/piflow/util/H2Util.scala | 4 +- .../src/main/scala/cn/piflow/api/API.scala | 15 ++ .../scala/cn/piflow/api/HTTPService.scala | 42 +++-- 17 files changed, 1003 insertions(+), 18 deletions(-) create mode 100644 piflow-bundle/src/main/resources/icon/unstructured/DocxParser.png create mode 100644 piflow-bundle/src/main/resources/icon/unstructured/HtmlParser.png create mode 100644 piflow-bundle/src/main/resources/icon/unstructured/ImageParser.png create mode 100644 piflow-bundle/src/main/resources/icon/unstructured/PdfParser.png create mode 100644 piflow-bundle/src/main/resources/icon/unstructured/PptxParser.png create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala create mode 100644 piflow-configure/src/main/scala/cn/piflow/conf/util/ProcessUtil.scala create mode 100644 piflow-configure/src/main/scala/cn/piflow/conf/util/UnstructuredUtils.scala diff --git a/piflow-bundle/pom.xml b/piflow-bundle/pom.xml index 79a0b244..f7a14d9c 100644 --- a/piflow-bundle/pom.xml +++ b/piflow-bundle/pom.xml @@ -14,6 +14,8 @@ 2.12.18 1.8 0.3.1 + 2.5.32 + 10.1.12 piflow-bundle @@ -298,6 +300,32 @@ hetu-jdbc 1.6.0
+ + com.typesafe.akka + akka-remote_2.12 + ${akka.version} + + + + com.typesafe.akka + akka-actor_2.12 + ${akka.version} + + + com.typesafe.akka + akka-slf4j_2.12 + ${akka.version} + + + com.typesafe.akka + akka-http_2.12 + ${akka.http.version} + + + com.typesafe.akka + akka-http-spray-json_2.12 + ${akka.http.version} +
diff --git a/piflow-bundle/src/main/resources/icon/unstructured/DocxParser.png b/piflow-bundle/src/main/resources/icon/unstructured/DocxParser.png new file mode 100644 index 0000000000000000000000000000000000000000..5a7b42a427749ad6b9375c2adb6d16c2a1359cc3 GIT binary patch literal 8464 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 R0RTY>(z|1%Ri$Ac{V$Mm(|iB` literal 0 HcmV?d00001 diff --git a/piflow-bundle/src/main/resources/icon/unstructured/PdfParser.png b/piflow-bundle/src/main/resources/icon/unstructured/PdfParser.png new file mode 100644 index 0000000000000000000000000000000000000000..8ee74b9c217b0106d5b6085a6bcb427a21eceee0 GIT binary patch literal 6919 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 literal 0 HcmV?d00001 diff --git a/piflow-bundle/src/main/resources/icon/unstructured/PptxParser.png b/piflow-bundle/src/main/resources/icon/unstructured/PptxParser.png new file mode 100644 index 0000000000000000000000000000000000000000..c918614924c755b322ace503885f84e2f50f1eca GIT binary patch literal 5916 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 SBdpvFP filePath)) + val responseFuture: Future[HttpResponse] = Http().singleRequest(HttpRequest(GET, url)) + val response: HttpResponse = Await.result(responseFuture, timeout.duration) + response.status match { + case StatusCodes.OK => + case _ => + println(s"Request failed with status ${response.status}") + throw new Exception("########## Exception: can not parse, file is not available!!!") + } + val localTempPath = "/data/temp/files/" + filePath = localTempPath + UnstructuredUtils.extractFileNameWithExtension(filePath) + // close ActorSystem + system.terminate() + } + + //Create a mutable ArrayBuffer to store the parameters of the curl command + val curlCommandParams = new ArrayBuffer[String]() + curlCommandParams += "curl" + curlCommandParams += "-X" + curlCommandParams += "POST" + curlCommandParams += s"$unstructuredHost:$unstructuredPort/general/v0/general" + curlCommandParams += "-H" + curlCommandParams += "accept: application/json" + curlCommandParams += "-H" + curlCommandParams += "Content-Type: multipart/form-data" + curlCommandParams += "-F" + curlCommandParams += s"files=@$filePath" + + val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) + if (error.nonEmpty) { + println(s"########## Exception: $error") + throw new Exception(s"########## Exception: $error") + } +// if ("hdfs".equals(fileSource)) { +// //Delete file +// +// } + + //Convert output to dataframe + //Register a JSON string as a temporary view + spark.read.json(output).createOrReplaceTempView("jsonTable") + //Define a schema. Because of the nested structure in JSON data, we need to define a complex schema + val schema = new org.apache.spark.sql.types.StructType( + Array( + new org.apache.spark.sql.types.StructField("type", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("element_id", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("text", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("metadata", new org.apache.spark.sql.types.StructType( + Array( + new org.apache.spark.sql.types.StructField("languages", org.apache.spark.sql.types.ArrayType(org.apache.spark.sql.types.StringType), true), + new org.apache.spark.sql.types.StructField("page_number", org.apache.spark.sql.types.IntegerType, true), + new org.apache.spark.sql.types.StructField("filename", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("filetype", org.apache.spark.sql.types.StringType, true) + ) + ), true) + ) + ) + + //The temporary view is read using the defined schema and converted to a DataFrame + val df = spark.read.schema(schema).json(output) + out.write(df) + } + + override def setProperties(map: Map[String, Any]): Unit = { + filePath = MapUtil.get(map, "filePath").asInstanceOf[String] + fileSource = MapUtil.get(map, "fileSource").asInstanceOf[String] + } + + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + var descriptor: List[PropertyDescriptor] = List() + val filePath = new PropertyDescriptor() + .name("filePath") + .displayName("FilePath") + .description("The path of the file(.docx)") + .defaultValue("") + .required(true) + .example("/test/test.docx") + descriptor = descriptor :+ filePath + + val fileSource = new PropertyDescriptor() + .name("fileSource") + .displayName("FileSource") + .description("The source of the file ") + .defaultValue("true") + .allowableValues(Set("hdfs", "nfs")) + .required(true) + .example("hdfs") + descriptor = descriptor :+ fileSource + + descriptor + } + + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/unstructured/DocxParser.png", this.getClass.getName) + } + + override def getGroup(): List[String] = { + List("unstructured") + } + + + override def initialize(ctx: ProcessContext): Unit = { + + } + +} diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala new file mode 100644 index 00000000..40472101 --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala @@ -0,0 +1,165 @@ +package cn.piflow.bundle.unstructured + +import akka.actor.ActorSystem +import akka.http.scaladsl.Http +import akka.http.scaladsl.model.HttpMethods.GET +import akka.http.scaladsl.model._ +import akka.util.Timeout +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil, UnstructuredUtils} +import cn.piflow.conf.{ConfigurableStop, Port} +import cn.piflow.util.PropertyUtil +import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} +import org.apache.spark.sql.SparkSession + +import java.net.URLEncoder +import scala.collection.mutable.ArrayBuffer +import scala.concurrent.duration.DurationInt +import scala.concurrent.{Await, Future} + +class HtmlParser extends ConfigurableStop { + val authorEmail: String = "tianyao@cnic.cn" + val description: String = "parse pdf to structured data." + val inportList: List[String] = List(Port.DefaultPort) + val outportList: List[String] = List(Port.DefaultPort) + + var filePath: String = _ + var fileSource: String = _ + var encoding: String = _ + var includePageBreaks: String = _ + + + override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + val spark = pec.get[SparkSession]() + + val serverPort = PropertyUtil.getIntPropertyValue("server.port") + val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") + var unstructuredPort: String = PropertyUtil.getPropertyValue("unstructured.port") + if (unstructuredHost ==null || unstructuredHost.isEmpty) { + println("########## Exception: can not parse, unstructured host is null!!!") + throw new Exception("########## Exception: can not parse, unstructured host is null!!!") + } else if ("127.0.0.1".equals(unstructuredHost) || "localhost".equals(unstructuredHost)) { + println("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") + throw new Exception("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") + } + if (unstructuredPort == null || unstructuredPort.isEmpty) unstructuredPort = "8000" + + //If the file path contains Spaces or special characters, you may need to use URLEncoder for encoding + filePath = URLEncoder.encode(filePath, "UTF-8").replace("+", "%20"); // 替换+为%20,因为URL编码中+代表空格 + + if ("hdfs".equals(fileSource)) { + //Download the file to the location where the unstructured server resides + //1.Create an ActorSystem, which is the basis for all asynchronous operations in Akka + implicit val system = ActorSystem("httpClient") + implicit val timeout: Timeout = Timeout(10.minutes) // 设置超时时间 + + val baseUrl = s"$unstructuredHost:$serverPort/hdfs/downloadFile" + + //2.Build the complete URL, including the query parameters + val url = Uri(baseUrl).withQuery(Uri.Query("filePath" -> filePath)) + val responseFuture: Future[HttpResponse] = Http().singleRequest(HttpRequest(GET, url)) + val response: HttpResponse = Await.result(responseFuture, timeout.duration) + response.status match { + case StatusCodes.OK => + case _ => + println(s"Request failed with status ${response.status}") + throw new Exception("########## Exception: can not parse, file is not available!!!") + } + val localTempPath = "/data/temp/files/" + filePath = localTempPath + UnstructuredUtils.extractFileNameWithExtension(filePath) + + // close ActorSystem + system.terminate() + } + + //Create a mutable ArrayBuffer to store the parameters of the curl command + val curlCommandParams = new ArrayBuffer[String]() + curlCommandParams += "curl" + curlCommandParams += "-X" + curlCommandParams += "POST" + curlCommandParams += s"$unstructuredHost:$unstructuredPort/general/v0/general" + curlCommandParams += "-H" + curlCommandParams += "accept: application/json" + curlCommandParams += "-H" + curlCommandParams += "Content-Type: multipart/form-data" + curlCommandParams += "-F" + curlCommandParams += s"files=@$filePath" + + val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) + if (error.nonEmpty) { + println(s"########## Exception: $error") + throw new Exception(s"########## Exception: $error") + } + // if ("hdfs".equals(fileSource)) { + // //Delete file + // + // } + + //Convert output to dataframe + //Register a JSON string as a temporary view + spark.read.json(output).createOrReplaceTempView("jsonTable") + //Define a schema. Because of the nested structure in JSON data, we need to define a complex schema + val schema = new org.apache.spark.sql.types.StructType( + Array( + new org.apache.spark.sql.types.StructField("type", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("element_id", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("text", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("metadata", new org.apache.spark.sql.types.StructType( + Array( + new org.apache.spark.sql.types.StructField("languages", org.apache.spark.sql.types.ArrayType(org.apache.spark.sql.types.StringType), true), + new org.apache.spark.sql.types.StructField("page_number", org.apache.spark.sql.types.IntegerType, true), + new org.apache.spark.sql.types.StructField("filename", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("filetype", org.apache.spark.sql.types.StringType, true) + ) + ), true) + ) + ) + + //The temporary view is read using the defined schema and converted to a DataFrame + val df = spark.read.schema(schema).json(output) + out.write(df) + } + + override def setProperties(map: Map[String, Any]): Unit = { + filePath = MapUtil.get(map, "filePath").asInstanceOf[String] + fileSource = MapUtil.get(map, "fileSource").asInstanceOf[String] + } + + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + var descriptor: List[PropertyDescriptor] = List() + val filePath = new PropertyDescriptor() + .name("filePath") + .displayName("FilePath") + .description("The path of the file(.html/.htm)") + .defaultValue("") + .required(true) + .example("/test/test.html") + descriptor = descriptor :+ filePath + + val fileSource = new PropertyDescriptor() + .name("fileSource") + .displayName("FileSource") + .description("The source of the file ") + .defaultValue("true") + .allowableValues(Set("hdfs", "nfs")) + .required(true) + .example("hdfs") + descriptor = descriptor :+ fileSource + + descriptor + } + + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/unstructured/HtmlParser.png", this.getClass.getName) + } + + override def getGroup(): List[String] = { + List("unstructured") + } + + + override def initialize(ctx: ProcessContext): Unit = { + + } + +} diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala new file mode 100644 index 00000000..99ab848d --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala @@ -0,0 +1,162 @@ +package cn.piflow.bundle.unstructured + +import akka.actor.ActorSystem +import akka.http.scaladsl.Http +import akka.http.scaladsl.model.HttpMethods.GET +import akka.http.scaladsl.model._ +import akka.util.Timeout +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil, UnstructuredUtils} +import cn.piflow.conf.{ConfigurableStop, Port} +import cn.piflow.util.PropertyUtil +import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} +import org.apache.spark.sql.SparkSession + +import java.net.URLEncoder +import scala.collection.mutable.ArrayBuffer +import scala.concurrent.duration.DurationInt +import scala.concurrent.{Await, Future} + +class ImageParser extends ConfigurableStop { + val authorEmail: String = "tianyao@cnic.cn" + val description: String = "parse pdf to structured data." + val inportList: List[String] = List(Port.DefaultPort) + val outportList: List[String] = List(Port.DefaultPort) + + var filePath: String = _ + var fileSource: String = _ + + + override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + val spark = pec.get[SparkSession]() + + val serverPort = PropertyUtil.getIntPropertyValue("server.port") + val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") + var unstructuredPort: String = PropertyUtil.getPropertyValue("unstructured.port") + if (unstructuredHost.isEmpty) { + println("########## Exception: can not parse, unstructured host is null!!!") + throw new Exception("########## Exception: can not parse, unstructured host is null!!!") + } else if ("127.0.0.1".equals(unstructuredHost) || "localhost".equals(unstructuredHost)) { + println("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") + throw new Exception("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") + } + if (unstructuredPort.isEmpty) unstructuredPort = "8000" + + //If the file path contains Spaces or special characters, you may need to use URLEncoder for encoding + filePath = URLEncoder.encode(filePath, "UTF-8").replace("+", "%20"); // 替换+为%20,因为URL编码中+代表空格 + + if ("hdfs".equals(fileSource)) { + //Download the file to the location where the unstructured server resides + //1.Create an ActorSystem, which is the basis for all asynchronous operations in Akka + implicit val system = ActorSystem("httpClient") + implicit val timeout: Timeout = Timeout(10.minutes) // 设置超时时间 + + val baseUrl = s"$unstructuredHost:$serverPort/hdfs/downloadFile" + + //2.Build the complete URL, including the query parameters + val url = Uri(baseUrl).withQuery(Uri.Query("filePath" -> filePath)) + val responseFuture: Future[HttpResponse] = Http().singleRequest(HttpRequest(GET, url)) + val response: HttpResponse = Await.result(responseFuture, timeout.duration) + response.status match { + case StatusCodes.OK => + case _ => + println(s"Request failed with status ${response.status}") + throw new Exception("########## Exception: can not parse, file is not available!!!") + } + val localTempPath = "/data/temp/files/" + filePath = localTempPath + UnstructuredUtils.extractFileNameWithExtension(filePath) + // close ActorSystem + system.terminate() + } + + //Create a mutable ArrayBuffer to store the parameters of the curl command + val curlCommandParams = new ArrayBuffer[String]() + curlCommandParams += "curl" + curlCommandParams += "-X" + curlCommandParams += "POST" + curlCommandParams += s"$unstructuredHost:$unstructuredPort/general/v0/general" + curlCommandParams += "-H" + curlCommandParams += "accept: application/json" + curlCommandParams += "-H" + curlCommandParams += "Content-Type: multipart/form-data" + curlCommandParams += "-F" + curlCommandParams += s"files=@$filePath" + + val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) + if (error.nonEmpty) { + println(s"########## Exception: $error") + throw new Exception(s"########## Exception: $error") + } +// if ("hdfs".equals(fileSource)) { +// //Delete file +// +// } + + //Convert output to dataframe + //Register a JSON string as a temporary view + spark.read.json(output).createOrReplaceTempView("jsonTable") + //Define a schema. Because of the nested structure in JSON data, we need to define a complex schema + val schema = new org.apache.spark.sql.types.StructType( + Array( + new org.apache.spark.sql.types.StructField("type", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("element_id", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("text", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("metadata", new org.apache.spark.sql.types.StructType( + Array( + new org.apache.spark.sql.types.StructField("languages", org.apache.spark.sql.types.ArrayType(org.apache.spark.sql.types.StringType), true), + new org.apache.spark.sql.types.StructField("page_number", org.apache.spark.sql.types.IntegerType, true), + new org.apache.spark.sql.types.StructField("filename", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("filetype", org.apache.spark.sql.types.StringType, true) + ) + ), true) + ) + ) + + //The temporary view is read using the defined schema and converted to a DataFrame + val df = spark.read.schema(schema).json(output) + out.write(df) + } + + override def setProperties(map: Map[String, Any]): Unit = { + filePath = MapUtil.get(map, "filePath").asInstanceOf[String] + fileSource = MapUtil.get(map, "fileSource").asInstanceOf[String] + } + + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + var descriptor: List[PropertyDescriptor] = List() + val filePath = new PropertyDescriptor() + .name("filePath") + .displayName("FilePath") + .description("The path of the file(.png/.jpg/.jpeg/.tiff/.bmp/.heic)") + .defaultValue("") + .required(true) + .example("/test/test.png") + descriptor = descriptor :+ filePath + + val fileSource = new PropertyDescriptor() + .name("fileSource") + .displayName("FileSource") + .description("The source of the file ") + .defaultValue("true") + .allowableValues(Set("hdfs", "nfs")) + .required(true) + .example("hdfs") + descriptor = descriptor :+ fileSource + + descriptor + } + + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/unstructured/ImageParser.png", this.getClass.getName) + } + + override def getGroup(): List[String] = { + List("unstructured") + } + + + override def initialize(ctx: ProcessContext): Unit = { + + } + +} diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala new file mode 100644 index 00000000..c502d0cb --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala @@ -0,0 +1,162 @@ +package cn.piflow.bundle.unstructured + +import akka.actor.ActorSystem +import akka.http.scaladsl.Http +import akka.http.scaladsl.model.HttpMethods.GET +import akka.http.scaladsl.model._ +import akka.util.Timeout +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil, UnstructuredUtils} +import cn.piflow.conf.{ConfigurableStop, Port} +import cn.piflow.util.PropertyUtil +import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} +import org.apache.spark.sql.SparkSession + +import java.net.URLEncoder +import scala.collection.mutable.ArrayBuffer +import scala.concurrent.duration.DurationInt +import scala.concurrent.{Await, Future} + +class PdfParser extends ConfigurableStop { + val authorEmail: String = "tianyao@cnic.cn" + val description: String = "parse pdf to structured data." + val inportList: List[String] = List(Port.DefaultPort) + val outportList: List[String] = List(Port.DefaultPort) + + var filePath: String = _ + var fileSource: String = _ + + + override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + val spark = pec.get[SparkSession]() + + val serverPort = PropertyUtil.getIntPropertyValue("server.port") + val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") + var unstructuredPort: String = PropertyUtil.getPropertyValue("unstructured.port") + if (unstructuredHost.isEmpty) { + println("########## Exception: can not parse, unstructured host is null!!!") + throw new Exception("########## Exception: can not parse, unstructured host is null!!!") + } else if ("127.0.0.1".equals(unstructuredHost) || "localhost".equals(unstructuredHost)) { + println("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") + throw new Exception("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") + } + if (unstructuredPort.isEmpty) unstructuredPort = "8000" + + //If the file path contains Spaces or special characters, you may need to use URLEncoder for encoding + filePath = URLEncoder.encode(filePath, "UTF-8").replace("+", "%20"); // 替换+为%20,因为URL编码中+代表空格 + + if ("hdfs".equals(fileSource)) { + //Download the file to the location where the unstructured server resides + //1.Create an ActorSystem, which is the basis for all asynchronous operations in Akka + implicit val system = ActorSystem("httpClient") + implicit val timeout: Timeout = Timeout(10.minutes) // 设置超时时间 + + val baseUrl = s"$unstructuredHost:$serverPort/hdfs/downloadFile" + + //2.Build the complete URL, including the query parameters + val url = Uri(baseUrl).withQuery(Uri.Query("filePath" -> filePath)) + val responseFuture: Future[HttpResponse] = Http().singleRequest(HttpRequest(GET, url)) + val response: HttpResponse = Await.result(responseFuture, timeout.duration) + response.status match { + case StatusCodes.OK => + case _ => + println(s"Request failed with status ${response.status}") + throw new Exception("########## Exception: can not parse, file is not available!!!") + } + val localTempPath = "/data/temp/files/" + filePath = localTempPath + UnstructuredUtils.extractFileNameWithExtension(filePath) + // close ActorSystem + system.terminate() + } + + //Create a mutable ArrayBuffer to store the parameters of the curl command + val curlCommandParams = new ArrayBuffer[String]() + curlCommandParams += "curl" + curlCommandParams += "-X" + curlCommandParams += "POST" + curlCommandParams += s"$unstructuredHost:$unstructuredPort/general/v0/general" + curlCommandParams += "-H" + curlCommandParams += "accept: application/json" + curlCommandParams += "-H" + curlCommandParams += "Content-Type: multipart/form-data" + curlCommandParams += "-F" + curlCommandParams += s"files=@$filePath" + + val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) + if (error.nonEmpty) { + println(s"########## Exception: $error") + throw new Exception(s"########## Exception: $error") + } + // if ("hdfs".equals(fileSource)) { + // //Delete file + // + // } + + //Convert output to dataframe + //Register a JSON string as a temporary view + spark.read.json(output).createOrReplaceTempView("jsonTable") + //Define a schema. Because of the nested structure in JSON data, we need to define a complex schema + val schema = new org.apache.spark.sql.types.StructType( + Array( + new org.apache.spark.sql.types.StructField("type", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("element_id", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("text", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("metadata", new org.apache.spark.sql.types.StructType( + Array( + new org.apache.spark.sql.types.StructField("languages", org.apache.spark.sql.types.ArrayType(org.apache.spark.sql.types.StringType), true), + new org.apache.spark.sql.types.StructField("page_number", org.apache.spark.sql.types.IntegerType, true), + new org.apache.spark.sql.types.StructField("filename", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("filetype", org.apache.spark.sql.types.StringType, true) + ) + ), true) + ) + ) + + //The temporary view is read using the defined schema and converted to a DataFrame + val df = spark.read.schema(schema).json(output) + out.write(df) + } + + override def setProperties(map: Map[String, Any]): Unit = { + filePath = MapUtil.get(map, "filePath").asInstanceOf[String] + fileSource = MapUtil.get(map, "fileSource").asInstanceOf[String] + } + + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + var descriptor: List[PropertyDescriptor] = List() + val filePath = new PropertyDescriptor() + .name("filePath") + .displayName("FilePath") + .description("The path of the file(.pdf)") + .defaultValue("") + .required(true) + .example("/test/test.pdf") + descriptor = descriptor :+ filePath + + val fileSource = new PropertyDescriptor() + .name("fileSource") + .displayName("FileSource") + .description("The source of the file ") + .defaultValue("true") + .allowableValues(Set("hdfs", "nfs")) + .required(true) + .example("hdfs") + descriptor = descriptor :+ fileSource + + descriptor + } + + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/unstructured/PdfParser.png", this.getClass.getName) + } + + override def getGroup(): List[String] = { + List("unstructured") + } + + + override def initialize(ctx: ProcessContext): Unit = { + + } + +} diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala new file mode 100644 index 00000000..c44a58ae --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala @@ -0,0 +1,172 @@ +package cn.piflow.bundle.unstructured + +import akka.actor.ActorSystem +import akka.http.scaladsl.Http +import akka.http.scaladsl.model.HttpMethods.GET +import akka.http.scaladsl.model._ +import akka.util.Timeout +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil, UnstructuredUtils} +import cn.piflow.conf.{ConfigurableStop, Port} +import cn.piflow.util.PropertyUtil +import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} +import org.apache.spark.sql.SparkSession + +import java.net.URLEncoder +import scala.collection.mutable.ArrayBuffer +import scala.concurrent.duration.DurationInt +import scala.concurrent.{Await, Future} + +class PptxParser extends ConfigurableStop { + val authorEmail: String = "tianyao@cnic.cn" + val description: String = "parse pdf to structured data." + val inportList: List[String] = List(Port.DefaultPort) + val outportList: List[String] = List(Port.DefaultPort) + + var filePath: String = _ + var fileSource: String = _ + var includePageBreaks: String = _ + + + override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + val spark = pec.get[SparkSession]() + + val serverPort = PropertyUtil.getIntPropertyValue("server.port") + val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") + var unstructuredPort: String = PropertyUtil.getPropertyValue("unstructured.port") + if (unstructuredHost.isEmpty) { + println("########## Exception: can not parse, unstructured host is null!!!") + throw new Exception("########## Exception: can not parse, unstructured host is null!!!") + } else if ("127.0.0.1".equals(unstructuredHost) || "localhost".equals(unstructuredHost)) { + println("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") + throw new Exception("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") + } + if (unstructuredPort.isEmpty) unstructuredPort = "8000" + + if (filePath.isEmpty) { + println("########## Exception: can not parse, filePath is null!!!") + throw new Exception("########## Exception: can not parse, filePath is null!!!") + } + if (fileSource.isEmpty) { + println("########## Exception: can not parse, fileSource is null!!!") + throw new Exception("########## Exception: can not parse, fileSource is null!!!") + } + + //If the file path contains Spaces or special characters, you may need to use URLEncoder for encoding + filePath = URLEncoder.encode(filePath, "UTF-8").replace("+", "%20"); // 替换+为%20,因为URL编码中+代表空格 + + if ("hdfs".equals(fileSource)) { + //Download the file to the location where the unstructured server resides + //1.Create an ActorSystem, which is the basis for all asynchronous operations in Akka + implicit val system = ActorSystem("httpClient") + implicit val timeout: Timeout = Timeout(10.minutes) // 设置超时时间 + + val baseUrl = s"$unstructuredHost:$serverPort/hdfs/downloadFile" + + //2.Build the complete URL, including the query parameters + val url = Uri(baseUrl).withQuery(Uri.Query("filePath" -> filePath)) + val responseFuture: Future[HttpResponse] = Http().singleRequest(HttpRequest(GET, url)) + val response: HttpResponse = Await.result(responseFuture, timeout.duration) + response.status match { + case StatusCodes.OK => + case _ => + println(s"Request failed with status ${response.status}") + throw new Exception("########## Exception: can not parse, file is not available!!!") + } + val localTempPath = "/data/temp/files/" + filePath = localTempPath + UnstructuredUtils.extractFileNameWithExtension(filePath) + // close ActorSystem + system.terminate() + } + + //Create a mutable ArrayBuffer to store the parameters of the curl command + val curlCommandParams = new ArrayBuffer[String]() + curlCommandParams += "curl" + curlCommandParams += "-X" + curlCommandParams += "POST" + curlCommandParams += s"$unstructuredHost:$unstructuredPort/general/v0/general" + curlCommandParams += "-H" + curlCommandParams += "accept: application/json" + curlCommandParams += "-H" + curlCommandParams += "Content-Type: multipart/form-data" + curlCommandParams += "-F" + curlCommandParams += s"files=@$filePath" + + val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) + if (error.nonEmpty) { + println(s"########## Exception: $error") + throw new Exception(s"########## Exception: $error") + } +// if ("hdfs".equals(fileSource)) { +// //Delete file +// +// } + + //Convert output to dataframe + //Register a JSON string as a temporary view + spark.read.json(output).createOrReplaceTempView("jsonTable") + //Define a schema. Because of the nested structure in JSON data, we need to define a complex schema + val schema = new org.apache.spark.sql.types.StructType( + Array( + new org.apache.spark.sql.types.StructField("type", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("element_id", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("text", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("metadata", new org.apache.spark.sql.types.StructType( + Array( + new org.apache.spark.sql.types.StructField("languages", org.apache.spark.sql.types.ArrayType(org.apache.spark.sql.types.StringType), true), + new org.apache.spark.sql.types.StructField("page_number", org.apache.spark.sql.types.IntegerType, true), + new org.apache.spark.sql.types.StructField("filename", org.apache.spark.sql.types.StringType, true), + new org.apache.spark.sql.types.StructField("filetype", org.apache.spark.sql.types.StringType, true) + ) + ), true) + ) + ) + + //The temporary view is read using the defined schema and converted to a DataFrame + val df = spark.read.schema(schema).json(output) + out.write(df) + } + + override def setProperties(map: Map[String, Any]): Unit = { + filePath = MapUtil.get(map, "filePath").asInstanceOf[String] + fileSource = MapUtil.get(map, "fileSource").asInstanceOf[String] + } + + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + var descriptor: List[PropertyDescriptor] = List() + val filePath = new PropertyDescriptor() + .name("filePath") + .displayName("FilePath") + .description("The path of the file(.pptx)") + .defaultValue("") + .required(true) + .example("/test/test.pptx") + descriptor = descriptor :+ filePath + + val fileSource = new PropertyDescriptor() + .name("fileSource") + .displayName("FileSource") + .description("The source of the file ") + .defaultValue("true") + .allowableValues(Set("hdfs", "nfs")) + .required(true) + .example("hdfs") + descriptor = descriptor :+ fileSource + + descriptor + } + + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/unstructured/PptxParser.png", this.getClass.getName) + } + + override def getGroup(): List[String] = { + List("unstructured") + } + + + override def initialize(ctx: ProcessContext): Unit = { + + } + +} diff --git a/piflow-configure/src/main/scala/cn/piflow/conf/util/ProcessUtil.scala b/piflow-configure/src/main/scala/cn/piflow/conf/util/ProcessUtil.scala new file mode 100644 index 00000000..618080be --- /dev/null +++ b/piflow-configure/src/main/scala/cn/piflow/conf/util/ProcessUtil.scala @@ -0,0 +1,42 @@ +package cn.piflow.conf.util + +import java.io.{ByteArrayOutputStream, PrintStream} +object ProcessUtil { + + /** + * 执行外部命令并返回标准输出和标准错误输出 + * + * @param command 要执行的命令及其参数 + * @return 一个包含标准输出和标准错误输出的元组 + */ + def executeCommand(command: Seq[String]): (String, String) = { + val processBuilder = new ProcessBuilder(command: _*) + val outBuffer = new ByteArrayOutputStream() + val errBuffer = new ByteArrayOutputStream() + val outStream = new PrintStream(outBuffer) + val errStream = new PrintStream(errBuffer) + + val process = processBuilder.start() + val threadOut = new Thread(() => scala.io.Source.fromInputStream(process.getInputStream()).getLines().foreach(outStream.println)) + val threadErr = new Thread(() => scala.io.Source.fromInputStream(process.getErrorStream()).getLines().foreach(errStream.println)) + + threadOut.start() + threadErr.start() + + // 等待进程结束 + process.waitFor() + threadOut.join() + threadErr.join() + + // 关闭流 + outStream.close() + errStream.close() + + // 获取输出和错误字符串 + val output = outBuffer.toString("UTF-8") + val error = errBuffer.toString("UTF-8") + + // 返回输出和错误 + (output, error) + } +} diff --git a/piflow-configure/src/main/scala/cn/piflow/conf/util/UnstructuredUtils.scala b/piflow-configure/src/main/scala/cn/piflow/conf/util/UnstructuredUtils.scala new file mode 100644 index 00000000..f96ce261 --- /dev/null +++ b/piflow-configure/src/main/scala/cn/piflow/conf/util/UnstructuredUtils.scala @@ -0,0 +1,16 @@ +package cn.piflow.conf.util + +object UnstructuredUtils { + + def extractFileNameWithExtension(filePath: String): String = { + val lastSeparatorIndex = filePath.lastIndexOf('/') + val lastBackslashIndex = filePath.lastIndexOf('\\') + val separatorIndex = Math.max(lastSeparatorIndex, lastBackslashIndex) + if (separatorIndex == -1) { + filePath // 如果没有找到分隔符,则整个字符串就是文件名 + } else { + filePath.substring(separatorIndex + 1) // 从分隔符后面开始截取,得到文件名 + } + } + +} diff --git a/piflow-core/src/main/scala/cn/piflow/util/FileUtil.scala b/piflow-core/src/main/scala/cn/piflow/util/FileUtil.scala index 3da2151f..2449659e 100644 --- a/piflow-core/src/main/scala/cn/piflow/util/FileUtil.scala +++ b/piflow-core/src/main/scala/cn/piflow/util/FileUtil.scala @@ -1,11 +1,57 @@ package cn.piflow.util -import java.io.{File, PrintWriter} - +import java.io.{File, IOException, PrintWriter} +import java.nio.file.{Files, Paths} import scala.io.Source +import org.apache.hadoop.conf.Configuration +import org.apache.hadoop.fs.{FSDataInputStream, FSDataOutputStream, FileStatus, FileSystem, Path} object FileUtil { + val LOCAL_FILE_PREFIX = "/data/temp/files/" + + def downloadFileFromHdfs(fsDefaultName: String, hdfsFilePath: String) = { + + var fs: FileSystem = null + var result: Boolean = false + try { + val conf = new Configuration() + conf.set("fs.default.name", fsDefaultName) + fs = FileSystem.get(conf) + val hdfsPath = new Path(hdfsFilePath) + val localPath = new Path(LOCAL_FILE_PREFIX + hdfsPath.getName()) // 本地目录和文件名 + + if (fs.exists(hdfsPath)) { + fs.copyToLocalFile(hdfsPath, localPath) + println(s"File ${hdfsPath.getName()} downloaded successfully.") + result = true + } else { + throw new Exception(s"File ${hdfsPath.getName()} does not exist in HDFS.") + } + } catch { + case ex: IOException => println(ex) + } finally { + HdfsUtil.close(fs) + } + result + } + + + def exists(localFilePath: String): Boolean = { + Files.exists(Paths.get(localFilePath)) + } + + def extractFileNameWithExtension(filePath: String): String = { + val lastSeparatorIndex = filePath.lastIndexOf('/') + val lastBackslashIndex = filePath.lastIndexOf('\\') + val separatorIndex = Math.max(lastSeparatorIndex, lastBackslashIndex) + if (separatorIndex == -1) { + filePath // 如果没有找到分隔符,则整个字符串就是文件名 + } else { + filePath.substring(separatorIndex + 1) // 从分隔符后面开始截取,得到文件名 + } + } + def getJarFile(file:File): Array[File] ={ val files = file.listFiles().filter(! _.isDirectory) .filter(t => t.toString.endsWith(".jar") ) //此处读取.txt and .md文件 diff --git a/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala b/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala index b3a931d3..5b15b7d7 100644 --- a/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala +++ b/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala @@ -29,9 +29,9 @@ object H2Util { var CONNECTION_URL = ""; val h2Path: String = PropertyUtil.getPropertyValue("h2.path") if (h2Path != null && h2Path.nonEmpty) { - CONNECTION_URL = "jdbc:h2:tcp://" + serverIP + "/~/piflow/" + h2Path + ";AUTO_SERVER=true;DB_CLOSE_ON_EXIT=FALSE" + CONNECTION_URL = "jdbc:h2:tcp://" + serverIP + "/~/piflow/" + h2Path + ";AUTO_SERVER=true;DB_CLOSE_DELAY=-1" } else { - CONNECTION_URL = "jdbc:h2:tcp://" + serverIP + "/~/piflow;AUTO_SERVER=true;DB_CLOSE_ON_EXIT=FALSE" + CONNECTION_URL = "jdbc:h2:tcp://" + serverIP + "/~/piflow;AUTO_SERVER=true;DB_CLOSE_DELAY=-1" } // val CONNECTION_URL = "jdbc:h2:tcp://" + serverIP + "/~/piflow;AUTO_SERVER=true" var connection: Connection = null diff --git a/piflow-server/src/main/scala/cn/piflow/api/API.scala b/piflow-server/src/main/scala/cn/piflow/api/API.scala index 8adc7312..cd79f85c 100644 --- a/piflow-server/src/main/scala/cn/piflow/api/API.scala +++ b/piflow-server/src/main/scala/cn/piflow/api/API.scala @@ -24,8 +24,23 @@ import org.apache.spark.launcher.SparkAppHandle import java.util.zip.{ZipEntry, ZipOutputStream} import scala.util.control.Breaks._ import scala.collection.mutable.{HashMap, ListBuffer, Map => MMap} +import scala.tools.nsc.classpath.FileUtils object API { + def downloadFileFromHdfs(filePath: String) = { + var result = false + //先检验file是否已经存在在本地 + val localFilePath =FileUtil.LOCAL_FILE_PREFIX+FileUtil.extractFileNameWithExtension(filePath) + val exists = FileUtil.exists(localFilePath) + if(!exists){ + val hdfsFS = PropertyUtil.getPropertyValue("fs.defaultFS") + result = FileUtil.downloadFileFromHdfs(hdfsFS,filePath) + }else{ + result = true + } + result + } + def addSparkJar(addSparkJarName: String) : String = { var id = "" diff --git a/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala b/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala index b769c630..54c0dc05 100644 --- a/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala +++ b/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala @@ -82,11 +82,11 @@ object HTTPService extends DefaultJsonProtocol with Directives with SprayJsonSup val flowInfoMap = MapUtil.get(resultMap, "flow").asInstanceOf[Map[String, Any]] val flowState = MapUtil.get(flowInfoMap,"state").asInstanceOf[String] - println("----------------getFlowYarnInfo--------------------start") +// println("----------------getFlowYarnInfo--------------------start") //yarn flow state val flowYarnInfoJson = API.getFlowYarnInfo(appID) - println("----------------getFlowYarnInfo--------------------finish") - println("----------------getFlowYarnInfo--------------------"+flowYarnInfoJson) +// println("----------------getFlowYarnInfo--------------------finish") +// println("----------------getFlowYarnInfo--------------------"+flowYarnInfoJson) // val map = OptionUtil.getAny(JSON.parseFull(flowYarnInfoJson)).asInstanceOf[Map[String, Any]] val map = JsonUtil.jsonToMap(flowYarnInfoJson) @@ -97,17 +97,18 @@ object HTTPService extends DefaultJsonProtocol with Directives with SprayJsonSup if (flowInfoMap.contains("state")) { println("----------------flowInfoMap.state--------------------"+flowState) - val checkState = StateUtil.FlowStateCheck(flowState, flowYarnState) - if (checkState == true) { - Future.successful(HttpResponse(SUCCESS_CODE, entity = result)) - } else { - val newflowState = StateUtil.getNewFlowState(flowState, flowYarnState) - if (newflowState != flowState) { - H2Util.updateFlowState(appID, newflowState) - } - result = API.getFlowInfo(appID) - Future.successful(HttpResponse(SUCCESS_CODE, entity = result)) - } +// val checkState = StateUtil.FlowStateCheck(flowState, flowYarnState) +// if (checkState == true) { +// Future.successful(HttpResponse(SUCCESS_CODE, entity = result)) +// } else { +// val newflowState = StateUtil.getNewFlowState(flowState, flowYarnState) +// if (newflowState != flowState) { +// H2Util.updateFlowState(appID, newflowState) +// } +// result = API.getFlowInfo(appID) +// Future.successful(HttpResponse(SUCCESS_CODE, entity = result)) +// } + Future.successful(HttpResponse(SUCCESS_CODE, entity = result)) } else if (yanrFlowInfoMap.contains("state")) { println("----------------yanrFlowInfoMap.state--------------------"+flowYarnState) var flowInfoMap = Map[String, Any]() @@ -827,6 +828,19 @@ object HTTPService extends DefaultJsonProtocol with Directives with SprayJsonSup } } + case HttpRequest(GET, Uri.Path("/hdfs/downloadFile"), headers, entity, protocol) => { + try { + val filePath = req.getUri().query().getOrElse("filePath", "") + API.downloadFileFromHdfs(filePath) + Future.successful(HttpResponse(FAIL_CODE, entity = "Success!!")) + } catch { + case ex => { + println(ex) + Future.successful(HttpResponse(FAIL_CODE, entity = "Fail!!")) + } + } + } + case _: HttpRequest => Future.successful(HttpResponse(UNKNOWN_CODE, entity = "Unknown resource!")) } From 9212191b101f8d0a8b9cc9ab0bff7414c84c1669 Mon Sep 17 00:00:00 2001 From: tianyao-0315 Date: Sun, 7 Apr 2024 18:33:39 +0800 Subject: [PATCH 33/68] #init unstructured data parser:.pdf/ .html/ .image/ ./docx/ .pptx --- .../bundle/unstructured/DocxParser.scala | 83 +---- .../bundle/unstructured/HtmlParser.scala | 82 +---- .../bundle/unstructured/ImageParser.scala | 83 +---- .../bundle/unstructured/PdfParser.scala | 83 +---- .../bundle/unstructured/PptxParser.scala | 92 +----- .../piflow/conf/util/UnstructuredUtils.scala | 16 - .../main/scala/cn/piflow/util/FileUtil.scala | 8 + .../main/scala/cn/piflow/util/H2Util.scala | 2 +- .../cn/piflow/util/UnstructuredUtils.scala | 40 +++ .../src/main/scala/cn/piflow/api/API.scala | 290 +++++++++--------- .../scala/cn/piflow/api/HTTPService.scala | 108 +++---- 11 files changed, 323 insertions(+), 564 deletions(-) delete mode 100644 piflow-configure/src/main/scala/cn/piflow/conf/util/UnstructuredUtils.scala create mode 100644 piflow-core/src/main/scala/cn/piflow/util/UnstructuredUtils.scala diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala index b58295a2..75e3c13a 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala @@ -1,21 +1,13 @@ package cn.piflow.bundle.unstructured -import akka.actor.ActorSystem -import akka.http.scaladsl.Http -import akka.http.scaladsl.model.HttpMethods.GET -import akka.http.scaladsl.model._ -import akka.util.Timeout import cn.piflow.conf.bean.PropertyDescriptor -import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil, UnstructuredUtils} +import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil} import cn.piflow.conf.{ConfigurableStop, Port} -import cn.piflow.util.PropertyUtil +import cn.piflow.util.{FileUtil, PropertyUtil, UnstructuredUtils} import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} import org.apache.spark.sql.SparkSession -import java.net.URLEncoder import scala.collection.mutable.ArrayBuffer -import scala.concurrent.duration.DurationInt -import scala.concurrent.{Await, Future} class DocxParser extends ConfigurableStop { val authorEmail: String = "tianyao@cnic.cn" @@ -31,46 +23,25 @@ class DocxParser extends ConfigurableStop { override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { val spark = pec.get[SparkSession]() - val serverPort = PropertyUtil.getIntPropertyValue("server.port") val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") var unstructuredPort: String = PropertyUtil.getPropertyValue("unstructured.port") - if (unstructuredHost.isEmpty) { + if (unstructuredHost == null || unstructuredHost.isEmpty) { println("########## Exception: can not parse, unstructured host is null!!!") throw new Exception("########## Exception: can not parse, unstructured host is null!!!") } else if ("127.0.0.1".equals(unstructuredHost) || "localhost".equals(unstructuredHost)) { println("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") throw new Exception("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") } - if (unstructuredPort.isEmpty) unstructuredPort = "8000" - - //If the file path contains Spaces or special characters, you may need to use URLEncoder for encoding - filePath = URLEncoder.encode(filePath, "UTF-8").replace("+", "%20"); // 替换+为%20,因为URL编码中+代表空格 + if (unstructuredPort == null || unstructuredPort.isEmpty) unstructuredPort = "8000" if ("hdfs".equals(fileSource)) { - //Download the file to the location where the unstructured server resides - //1.Create an ActorSystem, which is the basis for all asynchronous operations in Akka - implicit val system = ActorSystem("httpClient") - implicit val timeout: Timeout = Timeout(10.minutes) // 设置超时时间 - - val baseUrl = s"$unstructuredHost:$serverPort/hdfs/downloadFile" - - //2.Build the complete URL, including the query parameters - val url = Uri(baseUrl).withQuery(Uri.Query("filePath" -> filePath)) - val responseFuture: Future[HttpResponse] = Http().singleRequest(HttpRequest(GET, url)) - val response: HttpResponse = Await.result(responseFuture, timeout.duration) - response.status match { - case StatusCodes.OK => - case _ => - println(s"Request failed with status ${response.status}") - throw new Exception("########## Exception: can not parse, file is not available!!!") - } - val localTempPath = "/data/temp/files/" - filePath = localTempPath + UnstructuredUtils.extractFileNameWithExtension(filePath) - // close ActorSystem - system.terminate() + //Download the file to the location + UnstructuredUtils.downloadFileFromHdfs(filePath) + filePath = FileUtil.LOCAL_FILE_PREFIX + UnstructuredUtils.extractFileNameWithExtension(filePath) } //Create a mutable ArrayBuffer to store the parameters of the curl command + println("curl start==========================================================================") val curlCommandParams = new ArrayBuffer[String]() curlCommandParams += "curl" curlCommandParams += "-X" @@ -84,38 +55,18 @@ class DocxParser extends ConfigurableStop { curlCommandParams += s"files=@$filePath" val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) - if (error.nonEmpty) { + if (output.nonEmpty) { + val jsonRDD = spark.sparkContext.parallelize(Seq(output)) + val df = spark.read.json(jsonRDD) + out.write(df) + } else { println(s"########## Exception: $error") throw new Exception(s"########## Exception: $error") } -// if ("hdfs".equals(fileSource)) { -// //Delete file -// -// } - - //Convert output to dataframe - //Register a JSON string as a temporary view - spark.read.json(output).createOrReplaceTempView("jsonTable") - //Define a schema. Because of the nested structure in JSON data, we need to define a complex schema - val schema = new org.apache.spark.sql.types.StructType( - Array( - new org.apache.spark.sql.types.StructField("type", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("element_id", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("text", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("metadata", new org.apache.spark.sql.types.StructType( - Array( - new org.apache.spark.sql.types.StructField("languages", org.apache.spark.sql.types.ArrayType(org.apache.spark.sql.types.StringType), true), - new org.apache.spark.sql.types.StructField("page_number", org.apache.spark.sql.types.IntegerType, true), - new org.apache.spark.sql.types.StructField("filename", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("filetype", org.apache.spark.sql.types.StringType, true) - ) - ), true) - ) - ) - - //The temporary view is read using the defined schema and converted to a DataFrame - val df = spark.read.schema(schema).json(output) - out.write(df) + //delete local temp file + if ("hdfs".equals(fileSource)) { + UnstructuredUtils.deleteTempFile(filePath) + } } override def setProperties(map: Map[String, Any]): Unit = { diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala index 40472101..3dfb75d5 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala @@ -1,21 +1,13 @@ package cn.piflow.bundle.unstructured -import akka.actor.ActorSystem -import akka.http.scaladsl.Http -import akka.http.scaladsl.model.HttpMethods.GET -import akka.http.scaladsl.model._ -import akka.util.Timeout import cn.piflow.conf.bean.PropertyDescriptor -import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil, UnstructuredUtils} +import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil} import cn.piflow.conf.{ConfigurableStop, Port} -import cn.piflow.util.PropertyUtil +import cn.piflow.util.{FileUtil, PropertyUtil, UnstructuredUtils} import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} import org.apache.spark.sql.SparkSession -import java.net.URLEncoder import scala.collection.mutable.ArrayBuffer -import scala.concurrent.duration.DurationInt -import scala.concurrent.{Await, Future} class HtmlParser extends ConfigurableStop { val authorEmail: String = "tianyao@cnic.cn" @@ -32,10 +24,9 @@ class HtmlParser extends ConfigurableStop { override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { val spark = pec.get[SparkSession]() - val serverPort = PropertyUtil.getIntPropertyValue("server.port") val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") var unstructuredPort: String = PropertyUtil.getPropertyValue("unstructured.port") - if (unstructuredHost ==null || unstructuredHost.isEmpty) { + if (unstructuredHost == null || unstructuredHost.isEmpty) { println("########## Exception: can not parse, unstructured host is null!!!") throw new Exception("########## Exception: can not parse, unstructured host is null!!!") } else if ("127.0.0.1".equals(unstructuredHost) || "localhost".equals(unstructuredHost)) { @@ -44,35 +35,14 @@ class HtmlParser extends ConfigurableStop { } if (unstructuredPort == null || unstructuredPort.isEmpty) unstructuredPort = "8000" - //If the file path contains Spaces or special characters, you may need to use URLEncoder for encoding - filePath = URLEncoder.encode(filePath, "UTF-8").replace("+", "%20"); // 替换+为%20,因为URL编码中+代表空格 - if ("hdfs".equals(fileSource)) { - //Download the file to the location where the unstructured server resides - //1.Create an ActorSystem, which is the basis for all asynchronous operations in Akka - implicit val system = ActorSystem("httpClient") - implicit val timeout: Timeout = Timeout(10.minutes) // 设置超时时间 - - val baseUrl = s"$unstructuredHost:$serverPort/hdfs/downloadFile" - - //2.Build the complete URL, including the query parameters - val url = Uri(baseUrl).withQuery(Uri.Query("filePath" -> filePath)) - val responseFuture: Future[HttpResponse] = Http().singleRequest(HttpRequest(GET, url)) - val response: HttpResponse = Await.result(responseFuture, timeout.duration) - response.status match { - case StatusCodes.OK => - case _ => - println(s"Request failed with status ${response.status}") - throw new Exception("########## Exception: can not parse, file is not available!!!") - } - val localTempPath = "/data/temp/files/" - filePath = localTempPath + UnstructuredUtils.extractFileNameWithExtension(filePath) - - // close ActorSystem - system.terminate() + //Download the file to the location + UnstructuredUtils.downloadFileFromHdfs(filePath) + filePath = FileUtil.LOCAL_FILE_PREFIX + UnstructuredUtils.extractFileNameWithExtension(filePath) } //Create a mutable ArrayBuffer to store the parameters of the curl command + println("curl start==========================================================================") val curlCommandParams = new ArrayBuffer[String]() curlCommandParams += "curl" curlCommandParams += "-X" @@ -86,38 +56,18 @@ class HtmlParser extends ConfigurableStop { curlCommandParams += s"files=@$filePath" val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) - if (error.nonEmpty) { + if (output.nonEmpty) { + val jsonRDD = spark.sparkContext.parallelize(Seq(output)) + val df = spark.read.json(jsonRDD) + out.write(df) + } else { println(s"########## Exception: $error") throw new Exception(s"########## Exception: $error") } - // if ("hdfs".equals(fileSource)) { - // //Delete file - // - // } - - //Convert output to dataframe - //Register a JSON string as a temporary view - spark.read.json(output).createOrReplaceTempView("jsonTable") - //Define a schema. Because of the nested structure in JSON data, we need to define a complex schema - val schema = new org.apache.spark.sql.types.StructType( - Array( - new org.apache.spark.sql.types.StructField("type", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("element_id", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("text", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("metadata", new org.apache.spark.sql.types.StructType( - Array( - new org.apache.spark.sql.types.StructField("languages", org.apache.spark.sql.types.ArrayType(org.apache.spark.sql.types.StringType), true), - new org.apache.spark.sql.types.StructField("page_number", org.apache.spark.sql.types.IntegerType, true), - new org.apache.spark.sql.types.StructField("filename", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("filetype", org.apache.spark.sql.types.StringType, true) - ) - ), true) - ) - ) - - //The temporary view is read using the defined schema and converted to a DataFrame - val df = spark.read.schema(schema).json(output) - out.write(df) + //delete local temp file + if ("hdfs".equals(fileSource)) { + UnstructuredUtils.deleteTempFile(filePath) + } } override def setProperties(map: Map[String, Any]): Unit = { diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala index 99ab848d..34972988 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala @@ -1,21 +1,13 @@ package cn.piflow.bundle.unstructured -import akka.actor.ActorSystem -import akka.http.scaladsl.Http -import akka.http.scaladsl.model.HttpMethods.GET -import akka.http.scaladsl.model._ -import akka.util.Timeout import cn.piflow.conf.bean.PropertyDescriptor -import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil, UnstructuredUtils} +import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil} import cn.piflow.conf.{ConfigurableStop, Port} -import cn.piflow.util.PropertyUtil +import cn.piflow.util.{FileUtil, PropertyUtil, UnstructuredUtils} import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} import org.apache.spark.sql.SparkSession -import java.net.URLEncoder import scala.collection.mutable.ArrayBuffer -import scala.concurrent.duration.DurationInt -import scala.concurrent.{Await, Future} class ImageParser extends ConfigurableStop { val authorEmail: String = "tianyao@cnic.cn" @@ -30,46 +22,25 @@ class ImageParser extends ConfigurableStop { override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { val spark = pec.get[SparkSession]() - val serverPort = PropertyUtil.getIntPropertyValue("server.port") val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") var unstructuredPort: String = PropertyUtil.getPropertyValue("unstructured.port") - if (unstructuredHost.isEmpty) { + if (unstructuredHost == null || unstructuredHost.isEmpty) { println("########## Exception: can not parse, unstructured host is null!!!") throw new Exception("########## Exception: can not parse, unstructured host is null!!!") } else if ("127.0.0.1".equals(unstructuredHost) || "localhost".equals(unstructuredHost)) { println("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") throw new Exception("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") } - if (unstructuredPort.isEmpty) unstructuredPort = "8000" - - //If the file path contains Spaces or special characters, you may need to use URLEncoder for encoding - filePath = URLEncoder.encode(filePath, "UTF-8").replace("+", "%20"); // 替换+为%20,因为URL编码中+代表空格 + if (unstructuredPort == null || unstructuredPort.isEmpty) unstructuredPort = "8000" if ("hdfs".equals(fileSource)) { - //Download the file to the location where the unstructured server resides - //1.Create an ActorSystem, which is the basis for all asynchronous operations in Akka - implicit val system = ActorSystem("httpClient") - implicit val timeout: Timeout = Timeout(10.minutes) // 设置超时时间 - - val baseUrl = s"$unstructuredHost:$serverPort/hdfs/downloadFile" - - //2.Build the complete URL, including the query parameters - val url = Uri(baseUrl).withQuery(Uri.Query("filePath" -> filePath)) - val responseFuture: Future[HttpResponse] = Http().singleRequest(HttpRequest(GET, url)) - val response: HttpResponse = Await.result(responseFuture, timeout.duration) - response.status match { - case StatusCodes.OK => - case _ => - println(s"Request failed with status ${response.status}") - throw new Exception("########## Exception: can not parse, file is not available!!!") - } - val localTempPath = "/data/temp/files/" - filePath = localTempPath + UnstructuredUtils.extractFileNameWithExtension(filePath) - // close ActorSystem - system.terminate() + //Download the file to the location + UnstructuredUtils.downloadFileFromHdfs(filePath) + filePath = FileUtil.LOCAL_FILE_PREFIX + UnstructuredUtils.extractFileNameWithExtension(filePath) } //Create a mutable ArrayBuffer to store the parameters of the curl command + println("curl start==========================================================================") val curlCommandParams = new ArrayBuffer[String]() curlCommandParams += "curl" curlCommandParams += "-X" @@ -83,38 +54,18 @@ class ImageParser extends ConfigurableStop { curlCommandParams += s"files=@$filePath" val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) - if (error.nonEmpty) { + if (output.nonEmpty) { + val jsonRDD = spark.sparkContext.parallelize(Seq(output)) + val df = spark.read.json(jsonRDD) + out.write(df) + } else { println(s"########## Exception: $error") throw new Exception(s"########## Exception: $error") } -// if ("hdfs".equals(fileSource)) { -// //Delete file -// -// } - - //Convert output to dataframe - //Register a JSON string as a temporary view - spark.read.json(output).createOrReplaceTempView("jsonTable") - //Define a schema. Because of the nested structure in JSON data, we need to define a complex schema - val schema = new org.apache.spark.sql.types.StructType( - Array( - new org.apache.spark.sql.types.StructField("type", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("element_id", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("text", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("metadata", new org.apache.spark.sql.types.StructType( - Array( - new org.apache.spark.sql.types.StructField("languages", org.apache.spark.sql.types.ArrayType(org.apache.spark.sql.types.StringType), true), - new org.apache.spark.sql.types.StructField("page_number", org.apache.spark.sql.types.IntegerType, true), - new org.apache.spark.sql.types.StructField("filename", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("filetype", org.apache.spark.sql.types.StringType, true) - ) - ), true) - ) - ) - - //The temporary view is read using the defined schema and converted to a DataFrame - val df = spark.read.schema(schema).json(output) - out.write(df) + //delete local temp file + if ("hdfs".equals(fileSource)) { + UnstructuredUtils.deleteTempFile(filePath) + } } override def setProperties(map: Map[String, Any]): Unit = { diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala index c502d0cb..c8b4550b 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala @@ -1,21 +1,13 @@ package cn.piflow.bundle.unstructured -import akka.actor.ActorSystem -import akka.http.scaladsl.Http -import akka.http.scaladsl.model.HttpMethods.GET -import akka.http.scaladsl.model._ -import akka.util.Timeout import cn.piflow.conf.bean.PropertyDescriptor -import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil, UnstructuredUtils} +import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil} import cn.piflow.conf.{ConfigurableStop, Port} -import cn.piflow.util.PropertyUtil +import cn.piflow.util.{FileUtil, PropertyUtil, UnstructuredUtils} import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} import org.apache.spark.sql.SparkSession -import java.net.URLEncoder import scala.collection.mutable.ArrayBuffer -import scala.concurrent.duration.DurationInt -import scala.concurrent.{Await, Future} class PdfParser extends ConfigurableStop { val authorEmail: String = "tianyao@cnic.cn" @@ -30,46 +22,25 @@ class PdfParser extends ConfigurableStop { override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { val spark = pec.get[SparkSession]() - val serverPort = PropertyUtil.getIntPropertyValue("server.port") val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") var unstructuredPort: String = PropertyUtil.getPropertyValue("unstructured.port") - if (unstructuredHost.isEmpty) { + if (unstructuredHost == null || unstructuredHost.isEmpty) { println("########## Exception: can not parse, unstructured host is null!!!") throw new Exception("########## Exception: can not parse, unstructured host is null!!!") } else if ("127.0.0.1".equals(unstructuredHost) || "localhost".equals(unstructuredHost)) { println("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") throw new Exception("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") } - if (unstructuredPort.isEmpty) unstructuredPort = "8000" - - //If the file path contains Spaces or special characters, you may need to use URLEncoder for encoding - filePath = URLEncoder.encode(filePath, "UTF-8").replace("+", "%20"); // 替换+为%20,因为URL编码中+代表空格 + if (unstructuredPort == null || unstructuredPort.isEmpty) unstructuredPort = "8000" if ("hdfs".equals(fileSource)) { - //Download the file to the location where the unstructured server resides - //1.Create an ActorSystem, which is the basis for all asynchronous operations in Akka - implicit val system = ActorSystem("httpClient") - implicit val timeout: Timeout = Timeout(10.minutes) // 设置超时时间 - - val baseUrl = s"$unstructuredHost:$serverPort/hdfs/downloadFile" - - //2.Build the complete URL, including the query parameters - val url = Uri(baseUrl).withQuery(Uri.Query("filePath" -> filePath)) - val responseFuture: Future[HttpResponse] = Http().singleRequest(HttpRequest(GET, url)) - val response: HttpResponse = Await.result(responseFuture, timeout.duration) - response.status match { - case StatusCodes.OK => - case _ => - println(s"Request failed with status ${response.status}") - throw new Exception("########## Exception: can not parse, file is not available!!!") - } - val localTempPath = "/data/temp/files/" - filePath = localTempPath + UnstructuredUtils.extractFileNameWithExtension(filePath) - // close ActorSystem - system.terminate() + //Download the file to the location + UnstructuredUtils.downloadFileFromHdfs(filePath) + filePath = FileUtil.LOCAL_FILE_PREFIX + UnstructuredUtils.extractFileNameWithExtension(filePath) } //Create a mutable ArrayBuffer to store the parameters of the curl command + println("curl start==========================================================================") val curlCommandParams = new ArrayBuffer[String]() curlCommandParams += "curl" curlCommandParams += "-X" @@ -83,38 +54,18 @@ class PdfParser extends ConfigurableStop { curlCommandParams += s"files=@$filePath" val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) - if (error.nonEmpty) { + if (output.nonEmpty) { + val jsonRDD = spark.sparkContext.parallelize(Seq(output)) + val df = spark.read.json(jsonRDD) + out.write(df) + } else { println(s"########## Exception: $error") throw new Exception(s"########## Exception: $error") } - // if ("hdfs".equals(fileSource)) { - // //Delete file - // - // } - - //Convert output to dataframe - //Register a JSON string as a temporary view - spark.read.json(output).createOrReplaceTempView("jsonTable") - //Define a schema. Because of the nested structure in JSON data, we need to define a complex schema - val schema = new org.apache.spark.sql.types.StructType( - Array( - new org.apache.spark.sql.types.StructField("type", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("element_id", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("text", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("metadata", new org.apache.spark.sql.types.StructType( - Array( - new org.apache.spark.sql.types.StructField("languages", org.apache.spark.sql.types.ArrayType(org.apache.spark.sql.types.StringType), true), - new org.apache.spark.sql.types.StructField("page_number", org.apache.spark.sql.types.IntegerType, true), - new org.apache.spark.sql.types.StructField("filename", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("filetype", org.apache.spark.sql.types.StringType, true) - ) - ), true) - ) - ) - - //The temporary view is read using the defined schema and converted to a DataFrame - val df = spark.read.schema(schema).json(output) - out.write(df) + //delete local temp file + if ("hdfs".equals(fileSource)) { + UnstructuredUtils.deleteTempFile(filePath) + } } override def setProperties(map: Map[String, Any]): Unit = { diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala index c44a58ae..7649e209 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala @@ -1,21 +1,13 @@ package cn.piflow.bundle.unstructured -import akka.actor.ActorSystem -import akka.http.scaladsl.Http -import akka.http.scaladsl.model.HttpMethods.GET -import akka.http.scaladsl.model._ -import akka.util.Timeout import cn.piflow.conf.bean.PropertyDescriptor -import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil, UnstructuredUtils} +import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil} import cn.piflow.conf.{ConfigurableStop, Port} -import cn.piflow.util.PropertyUtil +import cn.piflow.util.{FileUtil, PropertyUtil, UnstructuredUtils} import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} import org.apache.spark.sql.SparkSession -import java.net.URLEncoder import scala.collection.mutable.ArrayBuffer -import scala.concurrent.duration.DurationInt -import scala.concurrent.{Await, Future} class PptxParser extends ConfigurableStop { val authorEmail: String = "tianyao@cnic.cn" @@ -31,55 +23,25 @@ class PptxParser extends ConfigurableStop { override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { val spark = pec.get[SparkSession]() - val serverPort = PropertyUtil.getIntPropertyValue("server.port") val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") var unstructuredPort: String = PropertyUtil.getPropertyValue("unstructured.port") - if (unstructuredHost.isEmpty) { + if (unstructuredHost == null || unstructuredHost.isEmpty) { println("########## Exception: can not parse, unstructured host is null!!!") throw new Exception("########## Exception: can not parse, unstructured host is null!!!") } else if ("127.0.0.1".equals(unstructuredHost) || "localhost".equals(unstructuredHost)) { println("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") throw new Exception("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") } - if (unstructuredPort.isEmpty) unstructuredPort = "8000" - - if (filePath.isEmpty) { - println("########## Exception: can not parse, filePath is null!!!") - throw new Exception("########## Exception: can not parse, filePath is null!!!") - } - if (fileSource.isEmpty) { - println("########## Exception: can not parse, fileSource is null!!!") - throw new Exception("########## Exception: can not parse, fileSource is null!!!") - } - - //If the file path contains Spaces or special characters, you may need to use URLEncoder for encoding - filePath = URLEncoder.encode(filePath, "UTF-8").replace("+", "%20"); // 替换+为%20,因为URL编码中+代表空格 + if (unstructuredPort == null || unstructuredPort.isEmpty) unstructuredPort = "8000" if ("hdfs".equals(fileSource)) { - //Download the file to the location where the unstructured server resides - //1.Create an ActorSystem, which is the basis for all asynchronous operations in Akka - implicit val system = ActorSystem("httpClient") - implicit val timeout: Timeout = Timeout(10.minutes) // 设置超时时间 - - val baseUrl = s"$unstructuredHost:$serverPort/hdfs/downloadFile" - - //2.Build the complete URL, including the query parameters - val url = Uri(baseUrl).withQuery(Uri.Query("filePath" -> filePath)) - val responseFuture: Future[HttpResponse] = Http().singleRequest(HttpRequest(GET, url)) - val response: HttpResponse = Await.result(responseFuture, timeout.duration) - response.status match { - case StatusCodes.OK => - case _ => - println(s"Request failed with status ${response.status}") - throw new Exception("########## Exception: can not parse, file is not available!!!") - } - val localTempPath = "/data/temp/files/" - filePath = localTempPath + UnstructuredUtils.extractFileNameWithExtension(filePath) - // close ActorSystem - system.terminate() + //Download the file to the location + UnstructuredUtils.downloadFileFromHdfs(filePath) + filePath = FileUtil.LOCAL_FILE_PREFIX + UnstructuredUtils.extractFileNameWithExtension(filePath) } //Create a mutable ArrayBuffer to store the parameters of the curl command + println("curl start==========================================================================") val curlCommandParams = new ArrayBuffer[String]() curlCommandParams += "curl" curlCommandParams += "-X" @@ -93,38 +55,18 @@ class PptxParser extends ConfigurableStop { curlCommandParams += s"files=@$filePath" val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) - if (error.nonEmpty) { + if (output.nonEmpty) { + val jsonRDD = spark.sparkContext.parallelize(Seq(output)) + val df = spark.read.json(jsonRDD) + out.write(df) + } else { println(s"########## Exception: $error") throw new Exception(s"########## Exception: $error") } -// if ("hdfs".equals(fileSource)) { -// //Delete file -// -// } - - //Convert output to dataframe - //Register a JSON string as a temporary view - spark.read.json(output).createOrReplaceTempView("jsonTable") - //Define a schema. Because of the nested structure in JSON data, we need to define a complex schema - val schema = new org.apache.spark.sql.types.StructType( - Array( - new org.apache.spark.sql.types.StructField("type", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("element_id", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("text", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("metadata", new org.apache.spark.sql.types.StructType( - Array( - new org.apache.spark.sql.types.StructField("languages", org.apache.spark.sql.types.ArrayType(org.apache.spark.sql.types.StringType), true), - new org.apache.spark.sql.types.StructField("page_number", org.apache.spark.sql.types.IntegerType, true), - new org.apache.spark.sql.types.StructField("filename", org.apache.spark.sql.types.StringType, true), - new org.apache.spark.sql.types.StructField("filetype", org.apache.spark.sql.types.StringType, true) - ) - ), true) - ) - ) - - //The temporary view is read using the defined schema and converted to a DataFrame - val df = spark.read.schema(schema).json(output) - out.write(df) + //delete local temp file + if ("hdfs".equals(fileSource)) { + UnstructuredUtils.deleteTempFile(filePath) + } } override def setProperties(map: Map[String, Any]): Unit = { diff --git a/piflow-configure/src/main/scala/cn/piflow/conf/util/UnstructuredUtils.scala b/piflow-configure/src/main/scala/cn/piflow/conf/util/UnstructuredUtils.scala deleted file mode 100644 index f96ce261..00000000 --- a/piflow-configure/src/main/scala/cn/piflow/conf/util/UnstructuredUtils.scala +++ /dev/null @@ -1,16 +0,0 @@ -package cn.piflow.conf.util - -object UnstructuredUtils { - - def extractFileNameWithExtension(filePath: String): String = { - val lastSeparatorIndex = filePath.lastIndexOf('/') - val lastBackslashIndex = filePath.lastIndexOf('\\') - val separatorIndex = Math.max(lastSeparatorIndex, lastBackslashIndex) - if (separatorIndex == -1) { - filePath // 如果没有找到分隔符,则整个字符串就是文件名 - } else { - filePath.substring(separatorIndex + 1) // 从分隔符后面开始截取,得到文件名 - } - } - -} diff --git a/piflow-core/src/main/scala/cn/piflow/util/FileUtil.scala b/piflow-core/src/main/scala/cn/piflow/util/FileUtil.scala index 2449659e..50895ce8 100644 --- a/piflow-core/src/main/scala/cn/piflow/util/FileUtil.scala +++ b/piflow-core/src/main/scala/cn/piflow/util/FileUtil.scala @@ -6,6 +6,8 @@ import scala.io.Source import org.apache.hadoop.conf.Configuration import org.apache.hadoop.fs.{FSDataInputStream, FSDataOutputStream, FileStatus, FileSystem, Path} +import scala.util.Try + object FileUtil { val LOCAL_FILE_PREFIX = "/data/temp/files/" @@ -52,6 +54,12 @@ object FileUtil { } } + def deleteFile(filePath: String): Try[Unit] = Try { + Files.delete(Paths.get(filePath)) + println(s"File $filePath deleted successfully.") + } + + def getJarFile(file:File): Array[File] ={ val files = file.listFiles().filter(! _.isDirectory) .filter(t => t.toString.endsWith(".jar") ) //此处读取.txt and .md文件 diff --git a/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala b/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala index 5b15b7d7..01160207 100644 --- a/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala +++ b/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala @@ -25,7 +25,7 @@ object H2Util { val CREATE_FLAG_TABLE = "create table if not exists configFlag(id bigint auto_increment, item varchar(255), flag int, createTime varchar(255))" val CREATE_SCHEDULE_TABLE = "create table if not exists schedule(id bigint auto_increment, scheduleId varchar(255), scheduleEntryId varchar(255), scheduleEntryType varchar(255))" val CREATE_PLUGIN_TABLE = "create table if not exists plugin (id varchar(255), name varchar(255), state varchar(255), createTime varchar(255), updateTime varchar(255))" - val serverIP = ServerIpUtil.getServerIp() + ":" + PropertyUtil.getPropertyValue("h2.port") + val serverIP = PropertyUtil.getPropertyValue("server.ip") + ":" + PropertyUtil.getPropertyValue("h2.port") var CONNECTION_URL = ""; val h2Path: String = PropertyUtil.getPropertyValue("h2.path") if (h2Path != null && h2Path.nonEmpty) { diff --git a/piflow-core/src/main/scala/cn/piflow/util/UnstructuredUtils.scala b/piflow-core/src/main/scala/cn/piflow/util/UnstructuredUtils.scala new file mode 100644 index 00000000..33234f3e --- /dev/null +++ b/piflow-core/src/main/scala/cn/piflow/util/UnstructuredUtils.scala @@ -0,0 +1,40 @@ +package cn.piflow.util +object UnstructuredUtils { + def deleteTempFile(filePath: String) = { + var result = false + FileUtil.deleteFile(filePath).recover { + case ex: Exception => + println(s"Failed to delete file $filePath: ${ex.getMessage}") + }.get + result = true + result + } + + + def extractFileNameWithExtension(filePath: String): String = { + val lastSeparatorIndex = filePath.lastIndexOf('/') + val lastBackslashIndex = filePath.lastIndexOf('\\') + val separatorIndex = Math.max(lastSeparatorIndex, lastBackslashIndex) + if (separatorIndex == -1) { + filePath // 如果没有找到分隔符,则整个字符串就是文件名 + } else { + filePath.substring(separatorIndex + 1) // 从分隔符后面开始截取,得到文件名 + } + } + + def downloadFileFromHdfs(filePath: String) = { + var result = false + //先检验file是否已经存在在本地 + val localFilePath = FileUtil.LOCAL_FILE_PREFIX + FileUtil.extractFileNameWithExtension(filePath) + val exists = FileUtil.exists(localFilePath) + if (!exists) { + val hdfsFS = PropertyUtil.getPropertyValue("fs.defaultFS") + result = FileUtil.downloadFileFromHdfs(hdfsFS, filePath) + } else { + result = true + } + result + } + + +} diff --git a/piflow-server/src/main/scala/cn/piflow/api/API.scala b/piflow-server/src/main/scala/cn/piflow/api/API.scala index cd79f85c..0aec61a1 100644 --- a/piflow-server/src/main/scala/cn/piflow/api/API.scala +++ b/piflow-server/src/main/scala/cn/piflow/api/API.scala @@ -1,17 +1,11 @@ package cn.piflow.api -import java.io.{ByteArrayInputStream, ByteArrayOutputStream, File, FileOutputStream} -import java.net.URI -import java.text.SimpleDateFormat -import java.util.{Date, Properties} -import java.util.concurrent.CountDownLatch import cn.piflow.conf.VisualizationType -import org.apache.spark.sql.SparkSession -import cn.piflow.conf.util.{ClassUtil, MapUtil, OptionUtil, PluginManager, ScalaExecutorUtil} -import cn.piflow.{GroupExecution, Process, Runner} import cn.piflow.conf.bean.{FlowBean, GroupBean} +import cn.piflow.conf.util.{ClassUtil, MapUtil, OptionUtil, PluginManager} import cn.piflow.util.HdfsUtil.{getJsonMapList, getLine} import cn.piflow.util._ +import cn.piflow.{GroupExecution, Process, Runner} import org.apache.hadoop.conf.Configuration import org.apache.hadoop.fs.{FSDataInputStream, FileStatus, FileSystem, Path} import org.apache.hadoop.io.IOUtils @@ -20,35 +14,26 @@ import org.apache.http.entity.StringEntity import org.apache.http.impl.client.HttpClients import org.apache.http.util.EntityUtils import org.apache.spark.launcher.SparkAppHandle +import org.apache.spark.sql.SparkSession +import java.io.{ByteArrayInputStream, ByteArrayOutputStream, File} +import java.text.SimpleDateFormat +import java.util.Date +import java.util.concurrent.CountDownLatch import java.util.zip.{ZipEntry, ZipOutputStream} +import scala.collection.mutable.{HashMap, ListBuffer} import scala.util.control.Breaks._ -import scala.collection.mutable.{HashMap, ListBuffer, Map => MMap} -import scala.tools.nsc.classpath.FileUtils object API { - def downloadFileFromHdfs(filePath: String) = { - var result = false - //先检验file是否已经存在在本地 - val localFilePath =FileUtil.LOCAL_FILE_PREFIX+FileUtil.extractFileNameWithExtension(filePath) - val exists = FileUtil.exists(localFilePath) - if(!exists){ - val hdfsFS = PropertyUtil.getPropertyValue("fs.defaultFS") - result = FileUtil.downloadFileFromHdfs(hdfsFS,filePath) - }else{ - result = true - } - result - } - def addSparkJar(addSparkJarName: String) : String = { + def addSparkJar(addSparkJarName: String): String = { var id = "" val sparkJarFile = new File(PropertyUtil.getSpartJarPath()) val jarFile = FileUtil.getJarFile(sparkJarFile) - breakable{ - jarFile.foreach( i => { - if(i.getName.equals(addSparkJarName)) { + breakable { + jarFile.foreach(i => { + if (i.getName.equals(addSparkJarName)) { id = H2Util.addSparkJar(addSparkJarName) break @@ -57,12 +42,13 @@ object API { } id } - def removeSparkJar(sparkJarId : String) : Boolean = { + + def removeSparkJar(sparkJarId: String): Boolean = { var result = false val sparkJarState = H2Util.removeSparkJar(sparkJarId) - if(sparkJarState == SparkJarState.ON){ + if (sparkJarState == SparkJarState.ON) { false - }else{ + } else { true } @@ -73,13 +59,13 @@ object API { pluginInfo }*/ - def addPlugin(pluginManager:PluginManager, pluginName : String) : String = { + def addPlugin(pluginManager: PluginManager, pluginName: String): String = { var id = "" val classpathFile = new File(pluginManager.getPluginPath()) val jarFile = FileUtil.getJarFile(classpathFile) - breakable{ - jarFile.foreach( i => { - if(i.getName.equals(pluginName)) { + breakable { + jarFile.foreach(i => { + if (i.getName.equals(pluginName)) { pluginManager.unloadPlugin(i.getAbsolutePath) pluginManager.loadPlugin(i.getAbsolutePath) @@ -91,16 +77,16 @@ object API { id } - def removePlugin(pluginManager:PluginManager, pluginId : String) : Boolean = { + def removePlugin(pluginManager: PluginManager, pluginId: String): Boolean = { var result = false - val pluginName = H2Util.getPluginInfoMap(pluginId).getOrElse("name","") - if(pluginName != ""){ + val pluginName = H2Util.getPluginInfoMap(pluginId).getOrElse("name", "") + if (pluginName != "") { val classpathFile = new File(pluginManager.getPluginPath()) val jarFile = FileUtil.getJarFile(classpathFile) - breakable{ - jarFile.foreach( i => { + breakable { + jarFile.foreach(i => { println(i.getAbsolutePath) - if(i.getName.equals(pluginName)) { + if (i.getName.equals(pluginName)) { pluginManager.unloadPlugin(i.getAbsolutePath) H2Util.removePlugin(pluginName) result = true @@ -113,12 +99,12 @@ object API { result } - def getPluginInfo(pluginId : String) : String = { + def getPluginInfo(pluginId: String): String = { val pluginInfo = H2Util.getPluginInfo(pluginId) pluginInfo } - def getConfigurableStopInPlugin(pluginManager:PluginManager, pluginName : String) : String = { + def getConfigurableStopInPlugin(pluginManager: PluginManager, pluginName: String): String = { var bundleList = List[String]() val stops = pluginManager.getPluginConfigurableStops(pluginName) stops.foreach(s => { @@ -128,7 +114,7 @@ object API { """{"bundles":"""" + bundleList.mkString(",") + """"}""" } - def getConfigurableStopInfoInPlugin(pluginManager:PluginManager, pluginName : String) : String = { + def getConfigurableStopInfoInPlugin(pluginManager: PluginManager, pluginName: String): String = { var bundleList = List[String]() val stops = pluginManager.getPluginConfigurableStops(pluginName) stops.foreach(s => { @@ -138,23 +124,23 @@ object API { jsonString } - def getResourceInfo() : String = { + def getResourceInfo(): String = { - try{ + try { val matricsURL = ConfigureUtil.getYarnResourceMatrics() val client = HttpClients.createDefault() - val get:HttpGet = new HttpGet(matricsURL) + val get: HttpGet = new HttpGet(matricsURL) - val response:CloseableHttpResponse = client.execute(get) + val response: CloseableHttpResponse = client.execute(get) val entity = response.getEntity - val str = EntityUtils.toString(entity,"UTF-8") -// val yarnInfo = OptionUtil.getAny(JSON.parseFull(str)).asInstanceOf[Map[String, Any]] + val str = EntityUtils.toString(entity, "UTF-8") + // val yarnInfo = OptionUtil.getAny(JSON.parseFull(str)).asInstanceOf[Map[String, Any]] val yarnInfo = JsonUtil.jsonToMap(str) val matricInfo = MapUtil.get(yarnInfo, "clusterMetrics").asInstanceOf[Map[String, Any]] - val totalVirtualCores = matricInfo.getOrElse("totalVirtualCores",""); - val allocatedVirtualCores = matricInfo.getOrElse("allocatedVirtualCores","") + val totalVirtualCores = matricInfo.getOrElse("totalVirtualCores", ""); + val allocatedVirtualCores = matricInfo.getOrElse("allocatedVirtualCores", "") val remainingVirtualCores = totalVirtualCores.toString.toDouble - allocatedVirtualCores.toString.toDouble; val cpuInfo = Map( "totalVirtualCores" -> totalVirtualCores, @@ -162,9 +148,9 @@ object API { "remainingVirtualCores" -> remainingVirtualCores ) - val totalMemoryGB = matricInfo.getOrElse("totalMB","").toString.toDouble/1024; - val allocatedMemoryGB = matricInfo.getOrElse("allocatedMB","").toString.toDouble/1024; - val remainingMemoryGB = totalMemoryGB - allocatedMemoryGB; + val totalMemoryGB = matricInfo.getOrElse("totalMB", "").toString.toDouble / 1024; + val allocatedMemoryGB = matricInfo.getOrElse("allocatedMB", "").toString.toDouble / 1024; + val remainingMemoryGB = totalMemoryGB - allocatedMemoryGB; val memoryInfo = Map( "totalMemoryGB" -> totalMemoryGB, "allocatedMemoryGB" -> allocatedMemoryGB, @@ -176,24 +162,24 @@ object API { val resultMap = Map("resource" -> map) JsonUtil.format(JsonUtil.toJson(resultMap)) - }catch{ - case ex:Exception => "" + } catch { + case ex: Exception => "" } } - def getScheduleInfo(scheduleId : String) : String = { + def getScheduleInfo(scheduleId: String): String = { val scheduleInfo = H2Util.getScheduleInfo(scheduleId) scheduleInfo } - def startGroup(groupJson : String) = { + def startGroup(groupJson: String) = { - println("StartGroup API get json: \n" + groupJson ) + println("StartGroup API get json: \n" + groupJson) - var appId:String = null -// val map = OptionUtil.getAny(JSON.parseFull(groupJson)).asInstanceOf[Map[String, Any]] + var appId: String = null + // val map = OptionUtil.getAny(JSON.parseFull(groupJson)).asInstanceOf[Map[String, Any]] val map = JsonUtil.jsonToMap(groupJson) val flowGroupMap = MapUtil.get(map, "group").asInstanceOf[Map[String, Any]] @@ -202,32 +188,33 @@ object API { val group = groupBean.constructGroup() val flowGroupExecution = Runner.create() - .bind("checkpoint.path",ConfigureUtil.getCheckpointPath()) - .bind("debug.path",ConfigureUtil.getDebugPath()) + .bind("checkpoint.path", ConfigureUtil.getCheckpointPath()) + .bind("debug.path", ConfigureUtil.getDebugPath()) .start(group); flowGroupExecution } - def stopGroup(flowGroupExecution : GroupExecution): String ={ + def stopGroup(flowGroupExecution: GroupExecution): String = { flowGroupExecution.stop() "ok" } - def getFlowGroupInfo(groupId : String) : String = { + def getFlowGroupInfo(groupId: String): String = { val flowGroupInfo = H2Util.getFlowGroupInfo(groupId) flowGroupInfo } - def getFlowGroupProgress(flowGroupID : String) : String = { + + def getFlowGroupProgress(flowGroupID: String): String = { val progress = H2Util.getGroupProgressPercent(flowGroupID) progress } - def startFlow(flowJson : String):(String,SparkAppHandle) = { + def startFlow(flowJson: String): (String, SparkAppHandle) = { - var appId:String = null -// val flowMap = OptionUtil.getAny(JSON.parseFull(flowJson)).asInstanceOf[Map[String, Any]] - val flowMap = JsonUtil.jsonToMap(flowJson) + var appId: String = null + // val flowMap = OptionUtil.getAny(JSON.parseFull(flowJson)).asInstanceOf[Map[String, Any]] + val flowMap = JsonUtil.jsonToMap(flowJson) //create flow @@ -238,34 +225,35 @@ object API { val appName = flow.getFlowName() val (stdout, stderr) = getLogFile(uuid, appName) - println("StartFlow API get json: \n" + flowJson ) + println("StartFlow API get json: \n" + flowJson) val countDownLatch = new CountDownLatch(1) - val handle = FlowLauncher.launch(flow).startApplication( new SparkAppHandle.Listener { + val handle = FlowLauncher.launch(flow).startApplication(new SparkAppHandle.Listener { override def stateChanged(handle: SparkAppHandle): Unit = { appId = handle.getAppId val sparkAppState = handle.getState - if(appId != null){ + if (appId != null) { println("Spark job with app id: " + appId + ",\t State changed to: " + sparkAppState) - }else{ + } else { println("Spark job's state changed to: " + sparkAppState) } - if (handle.getState().isFinal){ + if (handle.getState().isFinal) { countDownLatch.countDown() println("Task is finished!") } } + override def infoChanged(handle: SparkAppHandle): Unit = { //println("Info:" + handle.getState().toString) } }) - while (handle.getAppId == null){ + while (handle.getAppId == null) { Thread.sleep(100) } - while (!H2Util.isFlowExist(handle.getAppId)){ + while (!H2Util.isFlowExist(handle.getAppId)) { Thread.sleep(1000) } appId = handle.getAppId @@ -274,7 +262,7 @@ object API { } - def stopFlow(appID : String, process : SparkAppHandle) : String = { + def stopFlow(appID: String, process: SparkAppHandle): String = { //yarn application kill appId stopFlowOnYarn(appID) @@ -289,79 +277,79 @@ object API { "ok" } - def stopFlowOnYarn(appID : String) : String = { + def stopFlowOnYarn(appID: String): String = { //yarn application kill appId val url = ConfigureUtil.getYarnResourceManagerWebAppAddress() + appID + "/state" val client = HttpClients.createDefault() - val put:HttpPut = new HttpPut(url) - val body ="{\"state\":\"KILLED\"}" + val put: HttpPut = new HttpPut(url) + val body = "{\"state\":\"KILLED\"}" put.addHeader("Content-Type", "application/json") put.setEntity(new StringEntity(body)) - val response:CloseableHttpResponse = client.execute(put) + val response: CloseableHttpResponse = client.execute(put) val entity = response.getEntity - val str = EntityUtils.toString(entity,"UTF-8") + val str = EntityUtils.toString(entity, "UTF-8") str } - def getFlowInfo(appID : String) : String = { + def getFlowInfo(appID: String): String = { val flowInfo = H2Util.getFlowInfo(appID) flowInfo } - def getFlowProgress(appID : String) : String = { + def getFlowProgress(appID: String): String = { val progress = H2Util.getFlowProgress(appID) progress } - def getFlowYarnInfo(appID : String) : String = { + def getFlowYarnInfo(appID: String): String = { val url = ConfigureUtil.getYarnResourceManagerWebAppAddress() + appID val client = HttpClients.createDefault() - val get:HttpGet = new HttpGet(url) + val get: HttpGet = new HttpGet(url) - val response:CloseableHttpResponse = client.execute(get) + val response: CloseableHttpResponse = client.execute(get) val entity = response.getEntity - val str = EntityUtils.toString(entity,"UTF-8") + val str = EntityUtils.toString(entity, "UTF-8") str } - def getFlowCheckpoint(appId:String) : String = { + def getFlowCheckpoint(appId: String): String = { val checkpointPath = ConfigureUtil.getCheckpointPath().stripSuffix("/") + "/" + appId val checkpointList = HdfsUtil.getFiles(checkpointPath) """{"checkpoints":"""" + checkpointList.mkString(",") + """"}""" } - def getFlowDebugData(appId : String, stopName : String, port : String) : String = { + def getFlowDebugData(appId: String, stopName: String, port: String): String = { - val debugPath :String = ConfigureUtil.getDebugPath().stripSuffix("/") + "/" + appId + "/" + stopName + "/" + port; + val debugPath: String = ConfigureUtil.getDebugPath().stripSuffix("/") + "/" + appId + "/" + stopName + "/" + port; val schema = HdfsUtil.getLine(debugPath + "_schema") - val result ="{\"schema\":\"" + schema+ "\", \"debugDataPath\": \""+ debugPath + "\"}" + val result = "{\"schema\":\"" + schema + "\", \"debugDataPath\": \"" + debugPath + "\"}" result } - def getFlowVisualizationData(appId : String, stopName : String, visualizationType : String) : String = { + def getFlowVisualizationData(appId: String, stopName: String, visualizationType: String): String = { var dimensionMap = Map[String, List[String]]() - val visuanlizationPath :String = ConfigureUtil.getVisualizationPath().stripSuffix("/") + "/" + appId + "/" + stopName + "/" + val visuanlizationPath: String = ConfigureUtil.getVisualizationPath().stripSuffix("/") + "/" + appId + "/" + stopName + "/" val visualizationSchema = getLine(visuanlizationPath + "/schema") val schemaArray = visualizationSchema.split(",") val jsonMapList = getJsonMapList(visuanlizationPath + "/data") - if(VisualizationType.LineChart == visualizationType || - VisualizationType.Histogram == visualizationType ){ + if (VisualizationType.LineChart == visualizationType || + VisualizationType.Histogram == visualizationType) { - var visualizationTuple = List[Tuple2[String,String]]() + var visualizationTuple = List[Tuple2[String, String]]() - val jsonTupleList = jsonMapList.flatMap( map => map.toSeq) + val jsonTupleList = jsonMapList.flatMap(map => map.toSeq) val visualizationInfo = jsonTupleList.groupBy(_._1) visualizationInfo.foreach(dimension => { var valueList = List[String]() val dimensionList = dimension._2 - dimensionList.foreach( dimensionAndCountPair => { + dimensionList.foreach(dimensionAndCountPair => { val v = String.valueOf(dimensionAndCountPair._2) println(v) valueList = valueList :+ v @@ -372,10 +360,12 @@ object API { var lineChartMap = Map[String, Any]() var legend = List[String]() val x = schemaArray(0) - lineChartMap += {"xAxis" -> Map("type" -> x, "data" -> OptionUtil.getAny(dimensionMap.get(schemaArray(0))) )} + lineChartMap += { + "xAxis" -> Map("type" -> x, "data" -> OptionUtil.getAny(dimensionMap.get(schemaArray(0)))) + } //lineChartMap += {"yAxis" -> Map("type" -> "value")} var seritesList = List[Map[String, Any]]() - dimensionMap.filterKeys(!_.equals(x)).foreach(item =>{ + dimensionMap.filterKeys(!_.equals(x)).foreach(item => { val name_action = item._1 val data = item._2 val name = name_action.split("_")(0) @@ -384,17 +374,21 @@ object API { case VisualizationType.LineChart => "line" case VisualizationType.Histogram => "bar" } - val map = Map("name" -> name, "type" -> vType,"stack" -> action, "data" -> data) + val map = Map("name" -> name, "type" -> vType, "stack" -> action, "data" -> data) seritesList = map +: seritesList legend = name +: legend }) - lineChartMap += {"series" -> seritesList} - lineChartMap += {"legent" -> legend} + lineChartMap += { + "series" -> seritesList + } + lineChartMap += { + "legent" -> legend + } val visualizationJsonData = JsonUtil.format(JsonUtil.toJson(lineChartMap)) println(visualizationJsonData) visualizationJsonData - }else if (VisualizationType.ScatterPlot == visualizationType){ - var visualizationTuple = List[Tuple2[String,String]]() + } else if (VisualizationType.ScatterPlot == visualizationType) { + var visualizationTuple = List[Tuple2[String, String]]() val legendColumn = schemaArray(0) val abscissaColumn = schemaArray(1) @@ -402,30 +396,30 @@ object API { //get legend - val legendList = jsonMapList.map(item =>{ - item.getOrElse(legendColumn,"").asInstanceOf[String] + val legendList = jsonMapList.map(item => { + item.getOrElse(legendColumn, "").asInstanceOf[String] }).distinct //get schema - val newSchema = schemaArray.filter(_ != legendColumn ) + val newSchema = schemaArray.filter(_ != legendColumn) val schemaList = ListBuffer[Map[String, Any]]() var index = 0 - newSchema.foreach(column =>{ - val schemaMap = Map("name" -> column, "index" -> index, "text" ->column) + newSchema.foreach(column => { + val schemaMap = Map("name" -> column, "index" -> index, "text" -> column) schemaList.append(schemaMap) index = index + 1 }) //get series val seriesList = ListBuffer[Map[String, Any]]() - legendList.foreach( legend => { + legendList.foreach(legend => { var legendDataList = ListBuffer[List[String]]() jsonMapList.foreach(item => { - if(item.getOrElse(legendColumn,"").asInstanceOf[String].equals(legend)){ + if (item.getOrElse(legendColumn, "").asInstanceOf[String].equals(legend)) { var dataList = ListBuffer[String]() - newSchema.foreach(column =>{ - val value = item.getOrElse(column,"").asInstanceOf[String] + newSchema.foreach(column => { + val value = item.getOrElse(column, "").asInstanceOf[String] dataList.append(value) }) legendDataList.append(dataList.toList) @@ -436,33 +430,33 @@ object API { seriesList.append(legendMap) }) - val resultMap = Map[String, Any]("legend" -> legendList, "schema" -> schemaList.toList, "series" -> seriesList.toList) + val resultMap = Map[String, Any]("legend" -> legendList, "schema" -> schemaList.toList, "series" -> seriesList.toList) val visualizationJsonData = JsonUtil.format(JsonUtil.toJson(resultMap)) println(visualizationJsonData) visualizationJsonData - }else if(VisualizationType.PieChart == visualizationType ){ + } else if (VisualizationType.PieChart == visualizationType) { var legend = List[String]() val schemaArray = visualizationSchema.split(",") - val schemaReplaceMap = Map(schemaArray(1)->"value", schemaArray(0)->"name") + val schemaReplaceMap = Map(schemaArray(1) -> "value", schemaArray(0) -> "name") val jsonMapList = getJsonMapList(visuanlizationPath + "/data") var pieChartList = List[Map[String, Any]]() jsonMapList.foreach(map => { var lineMap = Map[String, Any]() - for(i <- 0 to schemaArray.size-1){ + for (i <- 0 to schemaArray.size - 1) { val column = schemaArray(i) - lineMap += (schemaReplaceMap.getOrElse(column,"")-> map.getOrElse(column,"")) + lineMap += (schemaReplaceMap.getOrElse(column, "") -> map.getOrElse(column, "")) } pieChartList = lineMap +: pieChartList }) - pieChartList.foreach( item => { - legend = item.getOrElse("name","").toString +: legend + pieChartList.foreach(item => { + legend = item.getOrElse("name", "").toString +: legend }) val pieChartMap = Map("legend" -> legend, "series" -> pieChartList) val visualizationJsonData = JsonUtil.format(JsonUtil.toJson(pieChartMap)) println(visualizationJsonData) visualizationJsonData - }else if(VisualizationType.Table == visualizationType ){ + } else if (VisualizationType.Table == visualizationType) { //println(visualizationSchema) //println(jsonMapList) val resultMap = Map[String, Any]("schema" -> schemaArray.toList, "data" -> jsonMapList) @@ -470,20 +464,20 @@ object API { println(visualizationJsonData) visualizationJsonData } - else{ + else { "" } } - def getStopInfo(bundle : String) : String = { - try{ + def getStopInfo(bundle: String): String = { + try { val str = ClassUtil.findConfigurableStopInfo(bundle) str - }catch{ - case ex : Exception => println(ex);throw ex + } catch { + case ex: Exception => println(ex); throw ex } } @@ -493,24 +487,24 @@ object API { """{"groups":"""" + groups + """"}""" } - def getAllStops() : String = { - var stops : List[String] = List() + def getAllStops(): String = { + var stops: List[String] = List() val stopList = ClassUtil.findAllConfigurableStop() - stopList.foreach(s => stops = s.getClass.getName +: stops ) + stopList.foreach(s => stops = s.getClass.getName +: stops) """{"stops":"""" + stops.mkString(",") + """"}""" } - def getAllStopsWithGroup() : String = { + def getAllStopsWithGroup(): String = { - var resultList:List[String] = List() - var stops = List[Tuple2[String,String]]() + var resultList: List[String] = List() + var stops = List[Tuple2[String, String]]() val configurableStopList = ClassUtil.findAllConfigurableStop() configurableStopList.foreach(s => { //generate (group,bundle) pair and put into stops val groupList = s.getGroup() groupList.foreach(group => { - val tuple = (group , s.getClass.getName) - stops = tuple +: stops + val tuple = (group, s.getClass.getName) + stops = tuple +: stops }) }) @@ -518,7 +512,7 @@ object API { val groupsInfo = stops.groupBy(_._1) groupsInfo.foreach(group => { val stopList = group._2 - stopList.foreach( groupAndstopPair => { + stopList.foreach(groupAndstopPair => { println(groupAndstopPair._1 + ":\t\t" + groupAndstopPair._2) var groupAndstop = groupAndstopPair._1 + ":" + groupAndstopPair._2 resultList = groupAndstop +: resultList @@ -537,10 +531,10 @@ object API { // "out 200" } */ - - private def getLogFile(uuid : String, appName : String) : (File,File) = { - val now : Date = new Date() - val dataFormat : SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss") + + private def getLogFile(uuid: String, appName: String): (File, File) = { + val now: Date = new Date() + val dataFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss") val nowDate = dataFormat.format(now) val stdoutPathString = PropertyUtil.getPropertyValue("log.path") + "/" + appName + "_" + uuid + "_stdout_" + nowDate @@ -552,25 +546,25 @@ object API { (stdout, stderr) } - def getHdfsDataByPath(hdfsPath:String) : ByteArrayInputStream={ + def getHdfsDataByPath(hdfsPath: String): ByteArrayInputStream = { val conf = new Configuration() conf.set("fs.defaultFS", PropertyUtil.getPropertyValue("fs.defaultFS")) val fs: FileSystem = FileSystem.get(conf) val fileStatusArr: Array[FileStatus] = fs.listStatus(new Path(hdfsPath)) val map = HashMap[String, FSDataInputStream]() for (elem <- fileStatusArr) { - val name =elem.getPath.getName + val name = elem.getPath.getName val inputStream = fs.open(elem.getPath) - map.put(name,inputStream) + map.put(name, inputStream) } val byteArrayOutputStream = new ByteArrayOutputStream() val zos = new ZipOutputStream(byteArrayOutputStream) - var zipEntry:ZipEntry = null + var zipEntry: ZipEntry = null for (elem <- map) { zipEntry = new ZipEntry(elem._1) zos.putNextEntry(zipEntry) - IOUtils.copyBytes(elem._2,zos,1024*1024*50,false) + IOUtils.copyBytes(elem._2, zos, 1024 * 1024 * 50, false) zos.closeEntry() } zos.close() @@ -581,7 +575,7 @@ object API { } -class WaitProcessTerminateRunnable(spark : SparkSession, process: Process) extends Runnable { +class WaitProcessTerminateRunnable(spark: SparkSession, process: Process) extends Runnable { override def run(): Unit = { process.awaitTermination() //spark.close() diff --git a/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala b/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala index 54c0dc05..23dd9338 100644 --- a/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala +++ b/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala @@ -27,7 +27,6 @@ import org.h2.tools.Server import spray.json.DefaultJsonProtocol import java.io.File -import java.net.InetAddress import java.text.SimpleDateFormat import java.util.Date @@ -54,9 +53,9 @@ object HTTPService extends DefaultJsonProtocol with Directives with SprayJsonSup def toJson(entity: RequestEntity): Map[String, Any] = { entity match { - case HttpEntity.Strict(_, data) =>{ -// val temp = JSON.parseFull(data.utf8String) -// temp.get.asInstanceOf[Map[String, Any]] + case HttpEntity.Strict(_, data) => { + // val temp = JSON.parseFull(data.utf8String) + // temp.get.asInstanceOf[Map[String, Any]] val temp = JsonUtil.jsonToMap(data.utf8String) temp } @@ -72,45 +71,45 @@ object HTTPService extends DefaultJsonProtocol with Directives with SprayJsonSup case HttpRequest(GET, Uri.Path("/flow/info"), headers, entity, protocol) => { - val appID = req.getUri().query().getOrElse("appID","") - if(!appID.equals("")){ - //server state in h2db - var result = API.getFlowInfo(appID) - println("getFlowInfo result: " + result) -// val resultMap = OptionUtil.getAny(JSON.parseFull(result)).asInstanceOf[Map[String, Any]] - val resultMap = JsonUtil.jsonToMap(result) - val flowInfoMap = MapUtil.get(resultMap, "flow").asInstanceOf[Map[String, Any]] - val flowState = MapUtil.get(flowInfoMap,"state").asInstanceOf[String] - -// println("----------------getFlowYarnInfo--------------------start") - //yarn flow state - val flowYarnInfoJson = API.getFlowYarnInfo(appID) -// println("----------------getFlowYarnInfo--------------------finish") -// println("----------------getFlowYarnInfo--------------------"+flowYarnInfoJson) - -// val map = OptionUtil.getAny(JSON.parseFull(flowYarnInfoJson)).asInstanceOf[Map[String, Any]] - val map = JsonUtil.jsonToMap(flowYarnInfoJson) - val yanrFlowInfoMap = MapUtil.get(map, "app").asInstanceOf[Map[String, Any]] - val name = MapUtil.get(yanrFlowInfoMap,"name").asInstanceOf[String] - val flowYarnState = MapUtil.get(yanrFlowInfoMap,"state").asInstanceOf[String] + val appID = req.getUri().query().getOrElse("appID", "") + if (!appID.equals("")) { + //server state in h2db + var result = API.getFlowInfo(appID) + println("getFlowInfo result: " + result) + // val resultMap = OptionUtil.getAny(JSON.parseFull(result)).asInstanceOf[Map[String, Any]] + val resultMap = JsonUtil.jsonToMap(result) + val flowInfoMap = MapUtil.get(resultMap, "flow").asInstanceOf[Map[String, Any]] + val flowState = MapUtil.get(flowInfoMap, "state").asInstanceOf[String] + + // println("----------------getFlowYarnInfo--------------------start") + //yarn flow state + val flowYarnInfoJson = API.getFlowYarnInfo(appID) + // println("----------------getFlowYarnInfo--------------------finish") + // println("----------------getFlowYarnInfo--------------------"+flowYarnInfoJson) + + // val map = OptionUtil.getAny(JSON.parseFull(flowYarnInfoJson)).asInstanceOf[Map[String, Any]] + val map = JsonUtil.jsonToMap(flowYarnInfoJson) + val yanrFlowInfoMap = MapUtil.get(map, "app").asInstanceOf[Map[String, Any]] + val name = MapUtil.get(yanrFlowInfoMap, "name").asInstanceOf[String] + val flowYarnState = MapUtil.get(yanrFlowInfoMap, "state").asInstanceOf[String] if (flowInfoMap.contains("state")) { - println("----------------flowInfoMap.state--------------------"+flowState) -// val checkState = StateUtil.FlowStateCheck(flowState, flowYarnState) -// if (checkState == true) { -// Future.successful(HttpResponse(SUCCESS_CODE, entity = result)) -// } else { -// val newflowState = StateUtil.getNewFlowState(flowState, flowYarnState) -// if (newflowState != flowState) { -// H2Util.updateFlowState(appID, newflowState) -// } -// result = API.getFlowInfo(appID) -// Future.successful(HttpResponse(SUCCESS_CODE, entity = result)) -// } + println("----------------flowInfoMap.state--------------------" + flowState) + // val checkState = StateUtil.FlowStateCheck(flowState, flowYarnState) + // if (checkState == true) { + // Future.successful(HttpResponse(SUCCESS_CODE, entity = result)) + // } else { + // val newflowState = StateUtil.getNewFlowState(flowState, flowYarnState) + // if (newflowState != flowState) { + // H2Util.updateFlowState(appID, newflowState) + // } + // result = API.getFlowInfo(appID) + // Future.successful(HttpResponse(SUCCESS_CODE, entity = result)) + // } Future.successful(HttpResponse(SUCCESS_CODE, entity = result)) } else if (yanrFlowInfoMap.contains("state")) { - println("----------------yanrFlowInfoMap.state--------------------"+flowYarnState) + println("----------------yanrFlowInfoMap.state--------------------" + flowYarnState) var flowInfoMap = Map[String, Any]() flowInfoMap += ("id" -> appID) flowInfoMap += ("name" -> name) @@ -275,7 +274,7 @@ object HTTPService extends DefaultJsonProtocol with Directives with SprayJsonSup // } // responseFuture - } + } case HttpRequest(POST, Uri.Path("/flow/stop"), headers, entity, protocol) => { @@ -520,7 +519,7 @@ object HTTPService extends DefaultJsonProtocol with Directives with SprayJsonSup val startDateStr = dataMap.get("startDate").getOrElse("").asInstanceOf[String] val endDateStr = dataMap.get("endDate").getOrElse("").asInstanceOf[String] val scheduleInstance = dataMap.get("schedule").getOrElse(Map[String, Any]()).asInstanceOf[Map[String, Any]] - println("scheduleInstance:"+scheduleInstance) + println("scheduleInstance:" + scheduleInstance) val id: String = "schedule_" + IdGenerator.uuid(); @@ -828,19 +827,6 @@ object HTTPService extends DefaultJsonProtocol with Directives with SprayJsonSup } } - case HttpRequest(GET, Uri.Path("/hdfs/downloadFile"), headers, entity, protocol) => { - try { - val filePath = req.getUri().query().getOrElse("filePath", "") - API.downloadFileFromHdfs(filePath) - Future.successful(HttpResponse(FAIL_CODE, entity = "Success!!")) - } catch { - case ex => { - println(ex) - Future.successful(HttpResponse(FAIL_CODE, entity = "Fail!!")) - } - } - } - case _: HttpRequest => Future.successful(HttpResponse(UNKNOWN_CODE, entity = "Unknown resource!")) } @@ -848,9 +834,10 @@ object HTTPService extends DefaultJsonProtocol with Directives with SprayJsonSup def run = { - val ip = InetAddress.getLocalHost.getHostAddress + // val ip = InetAddress.getLocalHost.getHostAddress + val ip = PropertyUtil.getPropertyValue("server.ip") //write ip to server.ip file - FileUtil.writeFile("server.ip=" + ip, ServerIpUtil.getServerIpFile()) +// FileUtil.writeFile("server.ip=" + ip, ServerIpUtil.getServerIpFile()) val port = PropertyUtil.getIntPropertyValue("server.port") Http().bindAndHandleAsync(route, ip, port) @@ -887,7 +874,7 @@ object HTTPService extends DefaultJsonProtocol with Directives with SprayJsonSup val scheduleList = H2Util.getStartedSchedule() scheduleList.foreach(id => { val scheduleContent = FlowFileUtil.readFlowFile(FlowFileUtil.getScheduleFilePath(id)) -// val dataMap = JSON.parseFull(scheduleContent).get.asInstanceOf[Map[String, Any]] + // val dataMap = JSON.parseFull(scheduleContent).get.asInstanceOf[Map[String, Any]] val dataMap = JsonUtil.jsonToMap(scheduleContent) val expression = dataMap.get("expression").getOrElse("").asInstanceOf[String] @@ -921,7 +908,8 @@ object Main { def flywayInit() = { - val ip = InetAddress.getLocalHost.getHostAddress + // val ip = InetAddress.getLocalHost.getHostAddress + val ip = PropertyUtil.getPropertyValue("server.ip") // Create the Flyway instance val flyway: Flyway = new Flyway(); val h2Path: String = PropertyUtil.getPropertyValue("h2.path") @@ -931,7 +919,7 @@ object Main { } else { url = "jdbc:h2:tcp://" + ip + ":" + PropertyUtil.getPropertyValue("h2.port") + "/~/piflow" } -// var url = "jdbc:h2:tcp://" + ip + ":" + PropertyUtil.getPropertyValue("h2.port") + "/~/piflow" + // var url = "jdbc:h2:tcp://" + ip + ":" + PropertyUtil.getPropertyValue("h2.port") + "/~/piflow" // Point it to the database flyway.setDataSource(url, null, null); flyway.setLocations("db/migrations"); @@ -963,8 +951,8 @@ object Main { }) } - def main(argv: Array[String]):Unit = { - val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers","-ifNotExists", "-tcpPort",PropertyUtil.getPropertyValue("h2.port")).start() + def main(argv: Array[String]): Unit = { + val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-ifNotExists", "-tcpPort", PropertyUtil.getPropertyValue("h2.port")).start() flywayInit() HTTPService.run initPlugin() From 976df6d66f91212d8f2811846b92782607a3da94 Mon Sep 17 00:00:00 2001 From: tianyao-0315 Date: Wed, 17 Apr 2024 21:31:14 +0800 Subject: [PATCH 34/68] #init unstructured data parser:.pdf/ .html/ .image/ ./docx/ .pptx --- .../bundle/unstructured/DocxParser.scala | 42 +++-- .../bundle/unstructured/HtmlParser.scala | 43 +++--- .../bundle/unstructured/ImageParser.scala | 58 +++++-- .../bundle/unstructured/PdfParser.scala | 91 +++++++++-- .../bundle/unstructured/PptxParser.scala | 38 +++-- .../cn/piflow/bundle/unstructured/test.scala | 144 ++++++++++++++++++ .../main/scala/cn/piflow/util/H2Util.scala | 1 + .../cn/piflow/util/UnstructuredUtils.scala | 97 ++++++++++++ .../scala/cn/piflow/api/HTTPService.scala | 9 +- 9 files changed, 442 insertions(+), 81 deletions(-) create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/test.scala diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala index 75e3c13a..b104f8cb 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala @@ -3,7 +3,7 @@ package cn.piflow.bundle.unstructured import cn.piflow.conf.bean.PropertyDescriptor import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil} import cn.piflow.conf.{ConfigurableStop, Port} -import cn.piflow.util.{FileUtil, PropertyUtil, UnstructuredUtils} +import cn.piflow.util.UnstructuredUtils import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} import org.apache.spark.sql.SparkSession @@ -11,20 +11,19 @@ import scala.collection.mutable.ArrayBuffer class DocxParser extends ConfigurableStop { val authorEmail: String = "tianyao@cnic.cn" - val description: String = "parse pdf to structured data." + val description: String = "parse docx to structured data." val inportList: List[String] = List(Port.DefaultPort) val outportList: List[String] = List(Port.DefaultPort) var filePath: String = _ var fileSource: String = _ - var includePageBreaks: String = _ override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { val spark = pec.get[SparkSession]() - val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") - var unstructuredPort: String = PropertyUtil.getPropertyValue("unstructured.port") + val unstructuredHost: String = UnstructuredUtils.unstructuredHost() + val unstructuredPort: String = UnstructuredUtils.unstructuredPort() if (unstructuredHost == null || unstructuredHost.isEmpty) { println("########## Exception: can not parse, unstructured host is null!!!") throw new Exception("########## Exception: can not parse, unstructured host is null!!!") @@ -32,12 +31,10 @@ class DocxParser extends ConfigurableStop { println("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") throw new Exception("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") } - if (unstructuredPort == null || unstructuredPort.isEmpty) unstructuredPort = "8000" - + var localDir = "" if ("hdfs".equals(fileSource)) { - //Download the file to the location - UnstructuredUtils.downloadFileFromHdfs(filePath) - filePath = FileUtil.LOCAL_FILE_PREFIX + UnstructuredUtils.extractFileNameWithExtension(filePath) + //Download the file to the location, + localDir = UnstructuredUtils.downloadFilesFromHdfs(filePath) } //Create a mutable ArrayBuffer to store the parameters of the curl command @@ -51,13 +48,26 @@ class DocxParser extends ConfigurableStop { curlCommandParams += "accept: application/json" curlCommandParams += "-H" curlCommandParams += "Content-Type: multipart/form-data" - curlCommandParams += "-F" - curlCommandParams += s"files=@$filePath" - + if ("hdfs".equals(fileSource)) { + val fileList = UnstructuredUtils.getLocalFilePaths(localDir) + fileList.foreach { path => + curlCommandParams += "-F" + curlCommandParams += s"files=@$path" + } + } + if ("nfs".equals(fileSource)) { + val fileList = UnstructuredUtils.getLocalFilePaths(filePath) + fileList.foreach { path => + curlCommandParams += "-F" + curlCommandParams += s"files=@$path" + } + } val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) if (output.nonEmpty) { + println(output) val jsonRDD = spark.sparkContext.parallelize(Seq(output)) val df = spark.read.json(jsonRDD) + df.show(10) out.write(df) } else { println(s"########## Exception: $error") @@ -65,7 +75,7 @@ class DocxParser extends ConfigurableStop { } //delete local temp file if ("hdfs".equals(fileSource)) { - UnstructuredUtils.deleteTempFile(filePath) + UnstructuredUtils.deleteTempFiles(localDir) } } @@ -80,7 +90,7 @@ class DocxParser extends ConfigurableStop { .name("filePath") .displayName("FilePath") .description("The path of the file(.docx)") - .defaultValue("") + .defaultValue("/test/test.docx") .required(true) .example("/test/test.docx") descriptor = descriptor :+ filePath @@ -89,7 +99,7 @@ class DocxParser extends ConfigurableStop { .name("fileSource") .displayName("FileSource") .description("The source of the file ") - .defaultValue("true") + .defaultValue("hdfs") .allowableValues(Set("hdfs", "nfs")) .required(true) .example("hdfs") diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala index 3dfb75d5..18682d0e 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala @@ -3,7 +3,7 @@ package cn.piflow.bundle.unstructured import cn.piflow.conf.bean.PropertyDescriptor import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil} import cn.piflow.conf.{ConfigurableStop, Port} -import cn.piflow.util.{FileUtil, PropertyUtil, UnstructuredUtils} +import cn.piflow.util.UnstructuredUtils import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} import org.apache.spark.sql.SparkSession @@ -11,21 +11,19 @@ import scala.collection.mutable.ArrayBuffer class HtmlParser extends ConfigurableStop { val authorEmail: String = "tianyao@cnic.cn" - val description: String = "parse pdf to structured data." + val description: String = "parse html to structured data." val inportList: List[String] = List(Port.DefaultPort) val outportList: List[String] = List(Port.DefaultPort) var filePath: String = _ var fileSource: String = _ - var encoding: String = _ - var includePageBreaks: String = _ override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { val spark = pec.get[SparkSession]() - val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") - var unstructuredPort: String = PropertyUtil.getPropertyValue("unstructured.port") + val unstructuredHost: String = UnstructuredUtils.unstructuredHost() + val unstructuredPort: String = UnstructuredUtils.unstructuredPort() if (unstructuredHost == null || unstructuredHost.isEmpty) { println("########## Exception: can not parse, unstructured host is null!!!") throw new Exception("########## Exception: can not parse, unstructured host is null!!!") @@ -33,12 +31,10 @@ class HtmlParser extends ConfigurableStop { println("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") throw new Exception("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") } - if (unstructuredPort == null || unstructuredPort.isEmpty) unstructuredPort = "8000" - + var localDir = "" if ("hdfs".equals(fileSource)) { - //Download the file to the location - UnstructuredUtils.downloadFileFromHdfs(filePath) - filePath = FileUtil.LOCAL_FILE_PREFIX + UnstructuredUtils.extractFileNameWithExtension(filePath) + //Download the file to the location, + localDir = UnstructuredUtils.downloadFilesFromHdfs(filePath) } //Create a mutable ArrayBuffer to store the parameters of the curl command @@ -52,13 +48,26 @@ class HtmlParser extends ConfigurableStop { curlCommandParams += "accept: application/json" curlCommandParams += "-H" curlCommandParams += "Content-Type: multipart/form-data" - curlCommandParams += "-F" - curlCommandParams += s"files=@$filePath" - + if ("hdfs".equals(fileSource)) { + val fileList = UnstructuredUtils.getLocalFilePaths(localDir) + fileList.foreach { path => + curlCommandParams += "-F" + curlCommandParams += s"files=@$path" + } + } + if ("nfs".equals(fileSource)) { + val fileList = UnstructuredUtils.getLocalFilePaths(filePath) + fileList.foreach { path => + curlCommandParams += "-F" + curlCommandParams += s"files=@$path" + } + } val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) if (output.nonEmpty) { + println(output) val jsonRDD = spark.sparkContext.parallelize(Seq(output)) val df = spark.read.json(jsonRDD) + df.show(10) out.write(df) } else { println(s"########## Exception: $error") @@ -66,7 +75,7 @@ class HtmlParser extends ConfigurableStop { } //delete local temp file if ("hdfs".equals(fileSource)) { - UnstructuredUtils.deleteTempFile(filePath) + UnstructuredUtils.deleteTempFiles(localDir) } } @@ -81,7 +90,7 @@ class HtmlParser extends ConfigurableStop { .name("filePath") .displayName("FilePath") .description("The path of the file(.html/.htm)") - .defaultValue("") + .defaultValue("/test/test.html") .required(true) .example("/test/test.html") descriptor = descriptor :+ filePath @@ -90,7 +99,7 @@ class HtmlParser extends ConfigurableStop { .name("fileSource") .displayName("FileSource") .description("The source of the file ") - .defaultValue("true") + .defaultValue("hdfs") .allowableValues(Set("hdfs", "nfs")) .required(true) .example("hdfs") diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala index 34972988..adf1421d 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala @@ -3,7 +3,7 @@ package cn.piflow.bundle.unstructured import cn.piflow.conf.bean.PropertyDescriptor import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil} import cn.piflow.conf.{ConfigurableStop, Port} -import cn.piflow.util.{FileUtil, PropertyUtil, UnstructuredUtils} +import cn.piflow.util.UnstructuredUtils import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} import org.apache.spark.sql.SparkSession @@ -11,19 +11,19 @@ import scala.collection.mutable.ArrayBuffer class ImageParser extends ConfigurableStop { val authorEmail: String = "tianyao@cnic.cn" - val description: String = "parse pdf to structured data." + val description: String = "parse image to structured data." val inportList: List[String] = List(Port.DefaultPort) val outportList: List[String] = List(Port.DefaultPort) var filePath: String = _ var fileSource: String = _ - + var strategy: String = _ override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { val spark = pec.get[SparkSession]() - val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") - var unstructuredPort: String = PropertyUtil.getPropertyValue("unstructured.port") + val unstructuredHost: String = UnstructuredUtils.unstructuredHost() + val unstructuredPort: String = UnstructuredUtils.unstructuredPort() if (unstructuredHost == null || unstructuredHost.isEmpty) { println("########## Exception: can not parse, unstructured host is null!!!") throw new Exception("########## Exception: can not parse, unstructured host is null!!!") @@ -31,12 +31,10 @@ class ImageParser extends ConfigurableStop { println("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") throw new Exception("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") } - if (unstructuredPort == null || unstructuredPort.isEmpty) unstructuredPort = "8000" - + var localDir = "" if ("hdfs".equals(fileSource)) { - //Download the file to the location - UnstructuredUtils.downloadFileFromHdfs(filePath) - filePath = FileUtil.LOCAL_FILE_PREFIX + UnstructuredUtils.extractFileNameWithExtension(filePath) + //Download the file to the location, + localDir = UnstructuredUtils.downloadFilesFromHdfs(filePath) } //Create a mutable ArrayBuffer to store the parameters of the curl command @@ -51,12 +49,31 @@ class ImageParser extends ConfigurableStop { curlCommandParams += "-H" curlCommandParams += "Content-Type: multipart/form-data" curlCommandParams += "-F" - curlCommandParams += s"files=@$filePath" - + curlCommandParams += "pdf_infer_table_structure=false" + curlCommandParams += "-F" + curlCommandParams += s"strategy=$strategy" + curlCommandParams += "-F" + curlCommandParams += "hi_res_model_name=detectron2_lp" + if ("hdfs".equals(fileSource)) { + val fileList = UnstructuredUtils.getLocalFilePaths(localDir) + fileList.foreach { path => + curlCommandParams += "-F" + curlCommandParams += s"files=@$path" + } + } + if ("nfs".equals(fileSource)) { + val fileList = UnstructuredUtils.getLocalFilePaths(filePath) + fileList.foreach { path => + curlCommandParams += "-F" + curlCommandParams += s"files=@$path" + } + } val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) if (output.nonEmpty) { + println(output) val jsonRDD = spark.sparkContext.parallelize(Seq(output)) val df = spark.read.json(jsonRDD) + df.show(10) out.write(df) } else { println(s"########## Exception: $error") @@ -64,13 +81,14 @@ class ImageParser extends ConfigurableStop { } //delete local temp file if ("hdfs".equals(fileSource)) { - UnstructuredUtils.deleteTempFile(filePath) + UnstructuredUtils.deleteTempFiles(localDir) } } override def setProperties(map: Map[String, Any]): Unit = { filePath = MapUtil.get(map, "filePath").asInstanceOf[String] fileSource = MapUtil.get(map, "fileSource").asInstanceOf[String] + strategy = MapUtil.get(map, "strategy").asInstanceOf[String] } override def getPropertyDescriptor(): List[PropertyDescriptor] = { @@ -79,7 +97,7 @@ class ImageParser extends ConfigurableStop { .name("filePath") .displayName("FilePath") .description("The path of the file(.png/.jpg/.jpeg/.tiff/.bmp/.heic)") - .defaultValue("") + .defaultValue("/test/test.png") .required(true) .example("/test/test.png") descriptor = descriptor :+ filePath @@ -88,12 +106,22 @@ class ImageParser extends ConfigurableStop { .name("fileSource") .displayName("FileSource") .description("The source of the file ") - .defaultValue("true") + .defaultValue("hdfs") .allowableValues(Set("hdfs", "nfs")) .required(true) .example("hdfs") descriptor = descriptor :+ fileSource + val strategy = new PropertyDescriptor() + .name("strategy") + .displayName("strategy") + .description("The method the method that will be used to process the file ") + .defaultValue("ocr_only") + .allowableValues(Set("ocr_only")) + .required(true) + .example("ocr_only") + descriptor = descriptor :+ strategy + descriptor } diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala index c8b4550b..0af1e167 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala @@ -3,9 +3,10 @@ package cn.piflow.bundle.unstructured import cn.piflow.conf.bean.PropertyDescriptor import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil} import cn.piflow.conf.{ConfigurableStop, Port} -import cn.piflow.util.{FileUtil, PropertyUtil, UnstructuredUtils} +import cn.piflow.util.UnstructuredUtils import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} -import org.apache.spark.sql.SparkSession +import org.apache.spark.sql.{DataFrame, SparkSession, functions} +import org.apache.spark.sql.types.{ArrayType, MapType, StringType, StructField, StructType} import scala.collection.mutable.ArrayBuffer @@ -17,13 +18,14 @@ class PdfParser extends ConfigurableStop { var filePath: String = _ var fileSource: String = _ + var strategy: String = _ override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { val spark = pec.get[SparkSession]() - val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") - var unstructuredPort: String = PropertyUtil.getPropertyValue("unstructured.port") + val unstructuredHost: String = UnstructuredUtils.unstructuredHost() + val unstructuredPort: String = UnstructuredUtils.unstructuredPort() if (unstructuredHost == null || unstructuredHost.isEmpty) { println("########## Exception: can not parse, unstructured host is null!!!") throw new Exception("########## Exception: can not parse, unstructured host is null!!!") @@ -31,12 +33,10 @@ class PdfParser extends ConfigurableStop { println("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") throw new Exception("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") } - if (unstructuredPort == null || unstructuredPort.isEmpty) unstructuredPort = "8000" - + var localDir = "" if ("hdfs".equals(fileSource)) { - //Download the file to the location - UnstructuredUtils.downloadFileFromHdfs(filePath) - filePath = FileUtil.LOCAL_FILE_PREFIX + UnstructuredUtils.extractFileNameWithExtension(filePath) + //Download the file to the location, + localDir = UnstructuredUtils.downloadFilesFromHdfs(filePath) } //Create a mutable ArrayBuffer to store the parameters of the curl command @@ -51,26 +51,77 @@ class PdfParser extends ConfigurableStop { curlCommandParams += "-H" curlCommandParams += "Content-Type: multipart/form-data" curlCommandParams += "-F" - curlCommandParams += s"files=@$filePath" - + curlCommandParams += "pdf_infer_table_structure=false" + curlCommandParams += "-F" + curlCommandParams += s"strategy=$strategy" + curlCommandParams += "-F" + curlCommandParams += "hi_res_model_name=detectron2_lp" + var fileListSize = 0; + if ("hdfs".equals(fileSource)) { + val fileList = UnstructuredUtils.getLocalFilePaths(localDir) + fileListSize = fileList.size + fileList.foreach { path => + println(s"local path:$path") + curlCommandParams += "-F" + curlCommandParams += s"files=@$path" + } + } + if ("nfs".equals(fileSource)) { + val fileList = UnstructuredUtils.getLocalFilePaths(filePath) + fileListSize = fileList.size + fileList.foreach { path => + println(s"local path:$path") + curlCommandParams += "-F" + curlCommandParams += s"files=@$path" + } + } val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) if (output.nonEmpty) { - val jsonRDD = spark.sparkContext.parallelize(Seq(output)) - val df = spark.read.json(jsonRDD) - out.write(df) + println(output) + + import spark.implicits._ + if (fileListSize > 1) { + val schema1 = ArrayType(StructType(Array( + StructField("type", StringType, true), + StructField("element_id", StringType, true), + StructField("text", StringType, true), + StructField("metadata", MapType(StringType, StringType), true) + ))) + val df = Seq(output).toDS().toDF("json").withColumn("data", functions.from_json($"json", schema1)) +// val df = spark.read.json(Seq(output).toDS()) +// .withColumn("data", functions.explode($"value")) +// .select("data.*") + df.show(10) + out.write(df) + } else { +// val schema2 = new StructType() +// .add("type", StringType) +// .add("element_id", StringType) +// .add("text", StringType) +// .add("metadata", MapType(StringType, StringType)) +// val df = Seq(output).toDS().toDF("json").withColumn("data", functions.from_json($"json", schema2)). + val df = spark.read.json(Seq(output).toDS()) + df.show(10) + out.write(df) + } + // val jsonRDD = spark.sparkContext.parallelize(Seq(output)) + // val df = spark.read.json(jsonRDD) + // df.show(10) + // out.write(df) } else { println(s"########## Exception: $error") throw new Exception(s"########## Exception: $error") } //delete local temp file if ("hdfs".equals(fileSource)) { - UnstructuredUtils.deleteTempFile(filePath) + UnstructuredUtils.deleteTempFiles(localDir) } } override def setProperties(map: Map[String, Any]): Unit = { filePath = MapUtil.get(map, "filePath").asInstanceOf[String] fileSource = MapUtil.get(map, "fileSource").asInstanceOf[String] + strategy = MapUtil.get(map, "strategy").asInstanceOf[String] } override def getPropertyDescriptor(): List[PropertyDescriptor] = { @@ -94,6 +145,16 @@ class PdfParser extends ConfigurableStop { .example("hdfs") descriptor = descriptor :+ fileSource + val strategy = new PropertyDescriptor() + .name("strategy") + .displayName("strategy") + .description("The method the method that will be used to process the file ") + .defaultValue("true") + .allowableValues(Set("auto", "hi_res", "ocr_only", "fast")) + .required(true) + .example("auto") + descriptor = descriptor :+ strategy + descriptor } diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala index 7649e209..8d959a20 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala @@ -3,7 +3,7 @@ package cn.piflow.bundle.unstructured import cn.piflow.conf.bean.PropertyDescriptor import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil} import cn.piflow.conf.{ConfigurableStop, Port} -import cn.piflow.util.{FileUtil, PropertyUtil, UnstructuredUtils} +import cn.piflow.util.UnstructuredUtils import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} import org.apache.spark.sql.SparkSession @@ -11,20 +11,19 @@ import scala.collection.mutable.ArrayBuffer class PptxParser extends ConfigurableStop { val authorEmail: String = "tianyao@cnic.cn" - val description: String = "parse pdf to structured data." + val description: String = "parse pptx to structured data." val inportList: List[String] = List(Port.DefaultPort) val outportList: List[String] = List(Port.DefaultPort) var filePath: String = _ var fileSource: String = _ - var includePageBreaks: String = _ override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { val spark = pec.get[SparkSession]() - val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") - var unstructuredPort: String = PropertyUtil.getPropertyValue("unstructured.port") + val unstructuredHost: String = UnstructuredUtils.unstructuredHost() + val unstructuredPort: String = UnstructuredUtils.unstructuredPort() if (unstructuredHost == null || unstructuredHost.isEmpty) { println("########## Exception: can not parse, unstructured host is null!!!") throw new Exception("########## Exception: can not parse, unstructured host is null!!!") @@ -32,12 +31,10 @@ class PptxParser extends ConfigurableStop { println("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") throw new Exception("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") } - if (unstructuredPort == null || unstructuredPort.isEmpty) unstructuredPort = "8000" - + var localDir = "" if ("hdfs".equals(fileSource)) { - //Download the file to the location - UnstructuredUtils.downloadFileFromHdfs(filePath) - filePath = FileUtil.LOCAL_FILE_PREFIX + UnstructuredUtils.extractFileNameWithExtension(filePath) + //Download the file to the location, + localDir = UnstructuredUtils.downloadFilesFromHdfs(filePath) } //Create a mutable ArrayBuffer to store the parameters of the curl command @@ -51,13 +48,26 @@ class PptxParser extends ConfigurableStop { curlCommandParams += "accept: application/json" curlCommandParams += "-H" curlCommandParams += "Content-Type: multipart/form-data" - curlCommandParams += "-F" - curlCommandParams += s"files=@$filePath" - + if ("hdfs".equals(fileSource)) { + val fileList = UnstructuredUtils.getLocalFilePaths(localDir) + fileList.foreach { path => + curlCommandParams += "-F" + curlCommandParams += s"files=@$path" + } + } + if ("nfs".equals(fileSource)) { + val fileList = UnstructuredUtils.getLocalFilePaths(filePath) + fileList.foreach { path => + curlCommandParams += "-F" + curlCommandParams += s"files=@$path" + } + } val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) if (output.nonEmpty) { + println(output) val jsonRDD = spark.sparkContext.parallelize(Seq(output)) val df = spark.read.json(jsonRDD) + df.show(10) out.write(df) } else { println(s"########## Exception: $error") @@ -65,7 +75,7 @@ class PptxParser extends ConfigurableStop { } //delete local temp file if ("hdfs".equals(fileSource)) { - UnstructuredUtils.deleteTempFile(filePath) + UnstructuredUtils.deleteTempFiles(localDir) } } diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/test.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/test.scala new file mode 100644 index 00000000..3453e9e8 --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/test.scala @@ -0,0 +1,144 @@ +package cn.piflow.bundle.unstructured +import cn.piflow.conf.util.ProcessUtil +import cn.piflow.util.UnstructuredUtils +import org.apache.spark.sql.types.{ArrayType, MapType, StringType, StructType} +import org.apache.spark.sql.{SparkSession, functions} + +import scala.collection.mutable.ArrayBuffer +object test { + def main(args: Array[String]): Unit = { + val spark = SparkSession.builder() + .master("local[*]") + .appName("MaxMinNormalizationTest") + .config("spark.driver.memory", "1g") + .config("spark.executor.memory", "2g") + .config("spark.cores.max", "2") + .getOrCreate() + spark.conf.set("spark.sql.decimalType.precision", "38") + + val fileSource = "nfs" + val filePath = "D:/work/0.πFlow/2.集成unstruct-io/1.测试文件/pdf;D:/work/0.πFlow/2.集成unstruct-io/1.测试文件/full_text.pdf" + val strategy = "auto" + val unstructuredHost: String = "10.0.82.194" + val unstructuredPort: String = "8000" + if (unstructuredHost == null || unstructuredHost.isEmpty) { + println("########## Exception: can not parse, unstructured host is null!!!") + throw new Exception("########## Exception: can not parse, unstructured host is null!!!") + } else if ("127.0.0.1".equals(unstructuredHost) || "localhost".equals(unstructuredHost)) { + println("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") + throw new Exception("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") + } + var localDir = "" + if ("hdfs".equals(fileSource)) { + //Download the file to the location, + localDir = UnstructuredUtils.downloadFilesFromHdfs(filePath) + } + + //Create a mutable ArrayBuffer to store the parameters of the curl command + println("curl start==========================================================================") + val curlCommandParams = new ArrayBuffer[String]() + curlCommandParams += "curl" + curlCommandParams += "-X" + curlCommandParams += "POST" + curlCommandParams += s"$unstructuredHost:$unstructuredPort/general/v0/general" + curlCommandParams += "-H" + curlCommandParams += "accept: application/json" + curlCommandParams += "-H" + curlCommandParams += "Content-Type: multipart/form-data" + curlCommandParams += "-F" + curlCommandParams += "pdf_infer_table_structure=false" + curlCommandParams += "-F" + curlCommandParams += s"strategy=$strategy" + curlCommandParams += "-F" + curlCommandParams += "hi_res_model_name=detectron2_lp" + var fileListSize = 0; + if ("hdfs".equals(fileSource)) { + val fileList = UnstructuredUtils.getLocalFilePaths(localDir) + fileListSize = fileList.size + fileList.foreach { path => + println(s"local path:$path") + curlCommandParams += "-F" + curlCommandParams += s"files=@$path" + } + } + if ("nfs".equals(fileSource)) { + val fileList = UnstructuredUtils.getLocalFilePaths(filePath) + fileListSize = fileList.size + fileList.foreach { path => + println(s"local path:$path") + curlCommandParams += "-F" + curlCommandParams += s"files=@$path" + } + } + val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) + if (output.nonEmpty) { + println(output) + import spark.implicits._ + if (fileListSize > 1) { + val schema1 = ArrayType( + new StructType() + .add("type", StringType) + .add("element_id", StringType) + .add("text", StringType) + .add("metadata", MapType(StringType, StringType)) + ) + val df = Seq(output).toDS().toDF("json").withColumn("data", functions.from_json($"json", schema1)) + // val df = spark.read.json(Seq(output).toDS()) + // .withColumn("data", functions.explode($"value")) + // .select("data.*") + df.show(10) + } else { + // val schema2 = new StructType() + // .add("type", StringType) + // .add("element_id", StringType) + // .add("text", StringType) + // .add("metadata", MapType(StringType, StringType)) + // val df = Seq(output).toDS().toDF("json").withColumn("data", functions.from_json($"json", schema2)). + val df = spark.read.json(Seq(output).toDS()) + df.show(10) + } + } else { + println(s"########## Exception: $error") + throw new Exception(s"########## Exception: $error") + } + } + +// def test()={ +// val spark = SparkSession.builder() +// .appName("JsonArrayToDataFrame") +// .config("spark.master", "local") +// .getOrCreate() +// +// // 用于示例的 JSON 数组字符串 +// val exampleJsonArrayString1 = +// """[[{"type":"UncategorizedText","element_id":"48f89b630677c2cbb70e2ba05bf7a363","text":"454","metadata":{"languages":["eng"],"page_number":1,"filename":"embedded-images-tables.pdf","filetype":"application/pdf"}},{"type":"Header","element_id":"9ca201e648ed74cfc838b6661f59addf","text":"O. Sanni, A.P.I. Popoola / Data in Brief 22 (2019) 451–457","metadata":{"languages":["eng"],"page_number":1,"filename":"embedded-images-tables.pdf","filetype":"application/pdf"}},{"type":"UncategorizedText","element_id":"f0e5c879f7d220552d8ad5b3503bd038","text":"Fig. 4. Anodic and cathodic polarization curve of stainless steel in 0.5 M H2SO4 solution in the presence and absence of ES.","metadata":{"languages":["eng"],"page_number":1,"parent_id":"9ca201e648ed74cfc838b6661f59addf","filename":"embedded-images-tables.pdf","filetype":"application/pdf"}}],[{"type":"UncategorizedText","element_id":"d54c69149058772f0dbffe267619fe62","text":"ExoFlow: A Universal Workflow System for Exactly-Once DAGs Siyuan Zhuang, UC Berkeley; Stephanie Wang, UC Berkeley and Anyscale; Eric Liang and Yi Cheng, Anyscale; Ion Stoica, UC Berkeley","metadata":{"languages":["eng"],"page_number":1,"filename":"full_text.pdf","filetype":"application/pdf"}},{"type":"Title","element_id":"566b36175e2c048f6f7288b4b6d2792e","text":"https://www.usenix.org/conference/osdi23/presentation/zhuang","metadata":{"languages":["eng"],"page_number":1,"filename":"full_text.pdf","filetype":"application/pdf"}},{"type":"Title","element_id":"416fdc1b946e9213121dcc2f87fc632d","text":"ExoFlow: A Universal Workflow System for Exactly-Once DAGs","metadata":{"languages":["eng"],"page_number":2,"filename":"full_text.pdf","filetype":"application/pdf"}}]] +// """ +// +// // 用于示例的第二种 JSON 数组字符串 +// val exampleJsonArrayString2 = +// """[{"type":"UncategorizedText","element_id":"48f89b630677c2cbb70e2ba05bf7a363","text":"454","metadata":{"languages":["eng"],"page_number":1,"filename":"embedded-images-tables.pdf","filetype":"application/pdf"}},{"type":"Header","element_id":"9ca201e648ed74cfc838b6661f59addf","text":"O. Sanni, A.P.I. Popoola / Data in Brief 22 (2019) 451–457","metadata":{"languages":["eng"],"page_number":1,"filename":"embedded-images-tables.pdf","filetype":"application/pdf"}},{"type":"UncategorizedText","element_id":"f0e5c879f7d220552d8ad5b3503bd038","text":"Fig. 4. Anodic and cathodic polarization curve of stainless steel in 0.5 M H2SO4 solution in the presence and absence of ES.","metadata":{"languages":["eng"],"page_number":1,"parent_id":"9ca201e648ed74cfc838b6661f59addf","filename":"embedded-images-tables.pdf","filetype":"application/pdf"}}] +// """ +// +// val exampleSchema = new StructType() +// .add("type", StringType) +// .add("element_id", StringType) +// .add("text", StringType) +// .add("metadata", MapType(StringType, StringType)) +// +// import spark.implicits._ +// +// // 将第一种格式的 JSON 数组字符串转换为 DataFrame +// val df1 = spark.read.json(Seq(exampleJsonArrayString1).toDS()) +// .withColumn("data", functions.explode($"value")) +// .select("data.*") +// +// // 将第二种格式的 JSON 数组字符串转换为 DataFrame +// val df2 = spark.read.json(Seq(exampleJsonArrayString2).toDS()) +// +// // 将两个 DataFrame 合并为一个 +// val combinedDF = df1.union(df2) +// +// combinedDF.show(false) +// } + +} diff --git a/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala b/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala index 01160207..cd0339c6 100644 --- a/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala +++ b/piflow-core/src/main/scala/cn/piflow/util/H2Util.scala @@ -26,6 +26,7 @@ object H2Util { val CREATE_SCHEDULE_TABLE = "create table if not exists schedule(id bigint auto_increment, scheduleId varchar(255), scheduleEntryId varchar(255), scheduleEntryType varchar(255))" val CREATE_PLUGIN_TABLE = "create table if not exists plugin (id varchar(255), name varchar(255), state varchar(255), createTime varchar(255), updateTime varchar(255))" val serverIP = PropertyUtil.getPropertyValue("server.ip") + ":" + PropertyUtil.getPropertyValue("h2.port") +// val serverIP = ServerIpUtil.getServerIp() + ":" + PropertyUtil.getPropertyValue("h2.port") var CONNECTION_URL = ""; val h2Path: String = PropertyUtil.getPropertyValue("h2.path") if (h2Path != null && h2Path.nonEmpty) { diff --git a/piflow-core/src/main/scala/cn/piflow/util/UnstructuredUtils.scala b/piflow-core/src/main/scala/cn/piflow/util/UnstructuredUtils.scala index 33234f3e..282dd535 100644 --- a/piflow-core/src/main/scala/cn/piflow/util/UnstructuredUtils.scala +++ b/piflow-core/src/main/scala/cn/piflow/util/UnstructuredUtils.scala @@ -1,5 +1,28 @@ package cn.piflow.util + +import org.apache.hadoop.conf.Configuration +import org.apache.hadoop.fs.{FileStatus, FileSystem, Path} + +import java.io.{File, IOException} +import java.nio.file.Files.isRegularFile +import java.nio.file.{Files, Paths} +import scala.:: +import scala.collection.mutable.ListBuffer + object UnstructuredUtils { + + def unstructuredHost(): String = { + val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") + unstructuredHost + } + + def unstructuredPort(): String = { + var unstructuredPort: String = PropertyUtil.getPropertyValue("unstructured.port") + if (unstructuredPort == null || unstructuredPort.isEmpty) unstructuredPort = "8000" + unstructuredPort + } + + def deleteTempFile(filePath: String) = { var result = false FileUtil.deleteFile(filePath).recover { @@ -36,5 +59,79 @@ object UnstructuredUtils { result } + def downloadFilesFromHdfs(hdfsFilePath: String) = { + // val hdfsFilePath = "/test;/test1/a.pdf" // HDFS路径,用分号隔开 + val localDir = FileUtil.LOCAL_FILE_PREFIX + IdGenerator.uuid() // 本地服务器目录 + val hdfsPaths = hdfsFilePath.split(";") // 将路径用分号分割成数组 + val conf = new Configuration() + conf.set("fs.defaultFS", PropertyUtil.getPropertyValue("fs.defaultFS")) // 设置HDFS的namenode地址 + val fs = FileSystem.get(conf) + hdfsPaths.foreach { hdfsPath => + downloadFiles(fs, new Path(hdfsPath), new Path(localDir)) + } + fs.close() + localDir + } + def downloadFiles(fs: FileSystem, srcPath: Path, localDir: Path): Unit = { + val status = fs.getFileStatus(srcPath) + if (status.isDirectory) { + val files = fs.listStatus(srcPath) + files.foreach { fileStatus => + val path = fileStatus.getPath + if (fileStatus.isFile) { + val localFilePath = new Path(localDir, path.getName) + fs.copyToLocalFile(false, path, localFilePath) + } else { + val newLocalDir = new Path(localDir, path.getName) + downloadFiles(fs, path, newLocalDir) + } + } + } else { + val localFilePath = new Path(localDir, srcPath.getName) + fs.copyToLocalFile(false, srcPath, localFilePath) + } + } + + def getLocalFilePaths(filePaths: String) = { + val paths = filePaths.split(";").toList + paths.flatMap { path => + val file = new File(path) + if (file.exists) { + if (file.isDirectory) { + listFiles(file) + } else { + List(file.getAbsolutePath).filterNot(_.endsWith(".crc")) + } + } else { + println("filePath is empty") + List.empty + } + }.filterNot(_.endsWith(".crc")) + } + + def listFiles(directory: File): List[String] = { + if (directory.exists && directory.isDirectory) { + directory.listFiles.flatMap { + case f if f.isFile => List(f.getAbsolutePath) + case d if d.isDirectory => listFiles(d) + }.toList.filterNot(_.endsWith(".crc")) // 过滤掉以 .crc 结尾的文件路径 + } else { + List.empty + } + } + + + def deleteTempFiles(localDir: String) = { + val directory = new File(localDir) + if (directory.exists() && directory.isDirectory) { + directory.listFiles.foreach { file => + file.delete() + } + directory.delete() + println(s"Directory $localDir deleted successfully") + } else { + println(s"Directory $localDir does not exist or is not a directory") + } + } } diff --git a/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala b/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala index 23dd9338..cfbb4a10 100644 --- a/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala +++ b/piflow-server/src/main/scala/cn/piflow/api/HTTPService.scala @@ -17,6 +17,7 @@ import cn.piflow.util._ import com.typesafe.akka.extension.quartz.QuartzSchedulerExtension import com.typesafe.config.ConfigFactory +import java.net.InetAddress import scala.concurrent.{Await, Future} //import scala.util.parsing.json.JSON @@ -837,7 +838,7 @@ object HTTPService extends DefaultJsonProtocol with Directives with SprayJsonSup // val ip = InetAddress.getLocalHost.getHostAddress val ip = PropertyUtil.getPropertyValue("server.ip") //write ip to server.ip file -// FileUtil.writeFile("server.ip=" + ip, ServerIpUtil.getServerIpFile()) + // FileUtil.writeFile("server.ip=" + ip, ServerIpUtil.getServerIpFile()) val port = PropertyUtil.getIntPropertyValue("server.port") Http().bindAndHandleAsync(route, ip, port) @@ -908,11 +909,11 @@ object Main { def flywayInit() = { - // val ip = InetAddress.getLocalHost.getHostAddress - val ip = PropertyUtil.getPropertyValue("server.ip") + val ip = InetAddress.getLocalHost.getHostAddress + // val ip = PropertyUtil.getPropertyValue("server.ip") // Create the Flyway instance val flyway: Flyway = new Flyway(); - val h2Path: String = PropertyUtil.getPropertyValue("h2.path") + val h2Path: String = PropertyUtil.getPropertyValue("h2.name") var url: String = "" if (h2Path != null && h2Path.nonEmpty) { url = "jdbc:h2:tcp://" + ip + ":" + PropertyUtil.getPropertyValue("h2.port") + "/~/piflow/" + h2Path From 711e57f577440bde8f36f1ef4c4986073f370b69 Mon Sep 17 00:00:00 2001 From: tianyao-0315 Date: Thu, 18 Apr 2024 14:07:31 +0800 Subject: [PATCH 35/68] #init unstructured data parser:.pdf/ .html/ .image/ ./docx/ .pptx --- .../cn/piflow/bundle/json/JsonSave.scala | 2 +- .../bundle/unstructured/DocxParser.scala | 33 +++- .../bundle/unstructured/HtmlParser.scala | 33 +++- .../bundle/unstructured/ImageParser.scala | 33 +++- .../bundle/unstructured/PdfParser.scala | 43 +++--- .../bundle/unstructured/PptxParser.scala | 33 +++- .../cn/piflow/bundle/unstructured/test.scala | 144 ------------------ .../cn/piflow/util/UnstructuredUtils.scala | 3 +- 8 files changed, 128 insertions(+), 196 deletions(-) delete mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/test.scala diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/json/JsonSave.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/json/JsonSave.scala index 7a09449d..58d721ed 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/json/JsonSave.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/json/JsonSave.scala @@ -39,7 +39,7 @@ class JsonSave extends ConfigurableStop{ .description("The save path of the json file") .defaultValue("") .required(true) - .example("hdfs://192.168.3.138:8020/work/testJson/test/") + .example("/test/test.json") descriptor = jsonSavePath :: descriptor descriptor diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala index b104f8cb..18c1d61c 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala @@ -5,7 +5,8 @@ import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil} import cn.piflow.conf.{ConfigurableStop, Port} import cn.piflow.util.UnstructuredUtils import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} -import org.apache.spark.sql.SparkSession +import com.alibaba.fastjson2.{JSON, JSONArray} +import org.apache.spark.sql.{DataFrame, SparkSession} import scala.collection.mutable.ArrayBuffer @@ -48,8 +49,10 @@ class DocxParser extends ConfigurableStop { curlCommandParams += "accept: application/json" curlCommandParams += "-H" curlCommandParams += "Content-Type: multipart/form-data" + var fileListSize = 0; if ("hdfs".equals(fileSource)) { val fileList = UnstructuredUtils.getLocalFilePaths(localDir) + fileListSize = fileList.size fileList.foreach { path => curlCommandParams += "-F" curlCommandParams += s"files=@$path" @@ -57,6 +60,7 @@ class DocxParser extends ConfigurableStop { } if ("nfs".equals(fileSource)) { val fileList = UnstructuredUtils.getLocalFilePaths(filePath) + fileListSize = fileList.size fileList.foreach { path => curlCommandParams += "-F" curlCommandParams += s"files=@$path" @@ -64,11 +68,28 @@ class DocxParser extends ConfigurableStop { } val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) if (output.nonEmpty) { - println(output) - val jsonRDD = spark.sparkContext.parallelize(Seq(output)) - val df = spark.read.json(jsonRDD) - df.show(10) - out.write(df) + // println(output) + import spark.implicits._ + if (fileListSize > 1) { + val array: JSONArray = JSON.parseArray(output) + var combinedDF: DataFrame = null + array.forEach { + o => + val jsonString = o.toString + val df = spark.read.json(Seq(jsonString).toDS) + if (combinedDF == null) { + combinedDF = df + } else { + combinedDF = combinedDF.union(df) + } + } + combinedDF.show(10) + out.write(combinedDF) + } else { + val df = spark.read.json(Seq(output).toDS()) + df.show(10) + out.write(df) + } } else { println(s"########## Exception: $error") throw new Exception(s"########## Exception: $error") diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala index 18682d0e..4a542c9b 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala @@ -5,7 +5,8 @@ import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil} import cn.piflow.conf.{ConfigurableStop, Port} import cn.piflow.util.UnstructuredUtils import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} -import org.apache.spark.sql.SparkSession +import com.alibaba.fastjson2.{JSON, JSONArray} +import org.apache.spark.sql.{DataFrame, SparkSession} import scala.collection.mutable.ArrayBuffer @@ -48,8 +49,10 @@ class HtmlParser extends ConfigurableStop { curlCommandParams += "accept: application/json" curlCommandParams += "-H" curlCommandParams += "Content-Type: multipart/form-data" + var fileListSize = 0; if ("hdfs".equals(fileSource)) { val fileList = UnstructuredUtils.getLocalFilePaths(localDir) + fileListSize = fileList.size fileList.foreach { path => curlCommandParams += "-F" curlCommandParams += s"files=@$path" @@ -57,6 +60,7 @@ class HtmlParser extends ConfigurableStop { } if ("nfs".equals(fileSource)) { val fileList = UnstructuredUtils.getLocalFilePaths(filePath) + fileListSize = fileList.size fileList.foreach { path => curlCommandParams += "-F" curlCommandParams += s"files=@$path" @@ -64,11 +68,28 @@ class HtmlParser extends ConfigurableStop { } val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) if (output.nonEmpty) { - println(output) - val jsonRDD = spark.sparkContext.parallelize(Seq(output)) - val df = spark.read.json(jsonRDD) - df.show(10) - out.write(df) + // println(output) + import spark.implicits._ + if (fileListSize > 1) { + val array: JSONArray = JSON.parseArray(output) + var combinedDF: DataFrame = null + array.forEach { + o => + val jsonString = o.toString + val df = spark.read.json(Seq(jsonString).toDS) + if (combinedDF == null) { + combinedDF = df + } else { + combinedDF = combinedDF.union(df) + } + } + combinedDF.show(10) + out.write(combinedDF) + } else { + val df = spark.read.json(Seq(output).toDS()) + df.show(10) + out.write(df) + } } else { println(s"########## Exception: $error") throw new Exception(s"########## Exception: $error") diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala index adf1421d..03c87cad 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala @@ -5,7 +5,8 @@ import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil} import cn.piflow.conf.{ConfigurableStop, Port} import cn.piflow.util.UnstructuredUtils import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} -import org.apache.spark.sql.SparkSession +import com.alibaba.fastjson2.{JSON, JSONArray} +import org.apache.spark.sql.{DataFrame, SparkSession} import scala.collection.mutable.ArrayBuffer @@ -54,8 +55,10 @@ class ImageParser extends ConfigurableStop { curlCommandParams += s"strategy=$strategy" curlCommandParams += "-F" curlCommandParams += "hi_res_model_name=detectron2_lp" + var fileListSize = 0; if ("hdfs".equals(fileSource)) { val fileList = UnstructuredUtils.getLocalFilePaths(localDir) + fileListSize = fileList.size fileList.foreach { path => curlCommandParams += "-F" curlCommandParams += s"files=@$path" @@ -63,6 +66,7 @@ class ImageParser extends ConfigurableStop { } if ("nfs".equals(fileSource)) { val fileList = UnstructuredUtils.getLocalFilePaths(filePath) + fileListSize = fileList.size fileList.foreach { path => curlCommandParams += "-F" curlCommandParams += s"files=@$path" @@ -70,11 +74,28 @@ class ImageParser extends ConfigurableStop { } val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) if (output.nonEmpty) { - println(output) - val jsonRDD = spark.sparkContext.parallelize(Seq(output)) - val df = spark.read.json(jsonRDD) - df.show(10) - out.write(df) + // println(output) + import spark.implicits._ + if (fileListSize > 1) { + val array: JSONArray = JSON.parseArray(output) + var combinedDF: DataFrame = null + array.forEach { + o => + val jsonString = o.toString + val df = spark.read.json(Seq(jsonString).toDS) + if (combinedDF == null) { + combinedDF = df + } else { + combinedDF = combinedDF.union(df) + } + } + combinedDF.show(10) + out.write(combinedDF) + } else { + val df = spark.read.json(Seq(output).toDS()) + df.show(10) + out.write(df) + } } else { println(s"########## Exception: $error") throw new Exception(s"########## Exception: $error") diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala index 0af1e167..54d9260f 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala @@ -5,8 +5,8 @@ import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil} import cn.piflow.conf.{ConfigurableStop, Port} import cn.piflow.util.UnstructuredUtils import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} -import org.apache.spark.sql.{DataFrame, SparkSession, functions} -import org.apache.spark.sql.types.{ArrayType, MapType, StringType, StructField, StructType} +import com.alibaba.fastjson2.{JSON, JSONArray} +import org.apache.spark.sql.{DataFrame, SparkSession} import scala.collection.mutable.ArrayBuffer @@ -77,37 +77,28 @@ class PdfParser extends ConfigurableStop { } val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) if (output.nonEmpty) { - println(output) - + // println(output) import spark.implicits._ if (fileListSize > 1) { - val schema1 = ArrayType(StructType(Array( - StructField("type", StringType, true), - StructField("element_id", StringType, true), - StructField("text", StringType, true), - StructField("metadata", MapType(StringType, StringType), true) - ))) - val df = Seq(output).toDS().toDF("json").withColumn("data", functions.from_json($"json", schema1)) -// val df = spark.read.json(Seq(output).toDS()) -// .withColumn("data", functions.explode($"value")) -// .select("data.*") - df.show(10) - out.write(df) + val array: JSONArray = JSON.parseArray(output) + var combinedDF: DataFrame = null + array.forEach { + o => + val jsonString = o.toString + val df = spark.read.json(Seq(jsonString).toDS) + if (combinedDF == null) { + combinedDF = df + } else { + combinedDF = combinedDF.union(df) + } + } + combinedDF.show(10) + out.write(combinedDF) } else { -// val schema2 = new StructType() -// .add("type", StringType) -// .add("element_id", StringType) -// .add("text", StringType) -// .add("metadata", MapType(StringType, StringType)) -// val df = Seq(output).toDS().toDF("json").withColumn("data", functions.from_json($"json", schema2)). val df = spark.read.json(Seq(output).toDS()) df.show(10) out.write(df) } - // val jsonRDD = spark.sparkContext.parallelize(Seq(output)) - // val df = spark.read.json(jsonRDD) - // df.show(10) - // out.write(df) } else { println(s"########## Exception: $error") throw new Exception(s"########## Exception: $error") diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala index 8d959a20..5c076963 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala @@ -5,7 +5,8 @@ import cn.piflow.conf.util.{ImageUtil, MapUtil, ProcessUtil} import cn.piflow.conf.{ConfigurableStop, Port} import cn.piflow.util.UnstructuredUtils import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} -import org.apache.spark.sql.SparkSession +import com.alibaba.fastjson2.{JSON, JSONArray} +import org.apache.spark.sql.{DataFrame, SparkSession} import scala.collection.mutable.ArrayBuffer @@ -48,8 +49,10 @@ class PptxParser extends ConfigurableStop { curlCommandParams += "accept: application/json" curlCommandParams += "-H" curlCommandParams += "Content-Type: multipart/form-data" + var fileListSize = 0; if ("hdfs".equals(fileSource)) { val fileList = UnstructuredUtils.getLocalFilePaths(localDir) + fileListSize = fileList.size fileList.foreach { path => curlCommandParams += "-F" curlCommandParams += s"files=@$path" @@ -57,6 +60,7 @@ class PptxParser extends ConfigurableStop { } if ("nfs".equals(fileSource)) { val fileList = UnstructuredUtils.getLocalFilePaths(filePath) + fileListSize = fileList.size fileList.foreach { path => curlCommandParams += "-F" curlCommandParams += s"files=@$path" @@ -64,11 +68,28 @@ class PptxParser extends ConfigurableStop { } val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) if (output.nonEmpty) { - println(output) - val jsonRDD = spark.sparkContext.parallelize(Seq(output)) - val df = spark.read.json(jsonRDD) - df.show(10) - out.write(df) + // println(output) + import spark.implicits._ + if (fileListSize > 1) { + val array: JSONArray = JSON.parseArray(output) + var combinedDF: DataFrame = null + array.forEach { + o => + val jsonString = o.toString + val df = spark.read.json(Seq(jsonString).toDS) + if (combinedDF == null) { + combinedDF = df + } else { + combinedDF = combinedDF.union(df) + } + } + combinedDF.show(10) + out.write(combinedDF) + } else { + val df = spark.read.json(Seq(output).toDS()) + df.show(10) + out.write(df) + } } else { println(s"########## Exception: $error") throw new Exception(s"########## Exception: $error") diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/test.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/test.scala deleted file mode 100644 index 3453e9e8..00000000 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/test.scala +++ /dev/null @@ -1,144 +0,0 @@ -package cn.piflow.bundle.unstructured -import cn.piflow.conf.util.ProcessUtil -import cn.piflow.util.UnstructuredUtils -import org.apache.spark.sql.types.{ArrayType, MapType, StringType, StructType} -import org.apache.spark.sql.{SparkSession, functions} - -import scala.collection.mutable.ArrayBuffer -object test { - def main(args: Array[String]): Unit = { - val spark = SparkSession.builder() - .master("local[*]") - .appName("MaxMinNormalizationTest") - .config("spark.driver.memory", "1g") - .config("spark.executor.memory", "2g") - .config("spark.cores.max", "2") - .getOrCreate() - spark.conf.set("spark.sql.decimalType.precision", "38") - - val fileSource = "nfs" - val filePath = "D:/work/0.πFlow/2.集成unstruct-io/1.测试文件/pdf;D:/work/0.πFlow/2.集成unstruct-io/1.测试文件/full_text.pdf" - val strategy = "auto" - val unstructuredHost: String = "10.0.82.194" - val unstructuredPort: String = "8000" - if (unstructuredHost == null || unstructuredHost.isEmpty) { - println("########## Exception: can not parse, unstructured host is null!!!") - throw new Exception("########## Exception: can not parse, unstructured host is null!!!") - } else if ("127.0.0.1".equals(unstructuredHost) || "localhost".equals(unstructuredHost)) { - println("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") - throw new Exception("########## Exception: can not parse, the unstructured host cannot be set to localhost!!!") - } - var localDir = "" - if ("hdfs".equals(fileSource)) { - //Download the file to the location, - localDir = UnstructuredUtils.downloadFilesFromHdfs(filePath) - } - - //Create a mutable ArrayBuffer to store the parameters of the curl command - println("curl start==========================================================================") - val curlCommandParams = new ArrayBuffer[String]() - curlCommandParams += "curl" - curlCommandParams += "-X" - curlCommandParams += "POST" - curlCommandParams += s"$unstructuredHost:$unstructuredPort/general/v0/general" - curlCommandParams += "-H" - curlCommandParams += "accept: application/json" - curlCommandParams += "-H" - curlCommandParams += "Content-Type: multipart/form-data" - curlCommandParams += "-F" - curlCommandParams += "pdf_infer_table_structure=false" - curlCommandParams += "-F" - curlCommandParams += s"strategy=$strategy" - curlCommandParams += "-F" - curlCommandParams += "hi_res_model_name=detectron2_lp" - var fileListSize = 0; - if ("hdfs".equals(fileSource)) { - val fileList = UnstructuredUtils.getLocalFilePaths(localDir) - fileListSize = fileList.size - fileList.foreach { path => - println(s"local path:$path") - curlCommandParams += "-F" - curlCommandParams += s"files=@$path" - } - } - if ("nfs".equals(fileSource)) { - val fileList = UnstructuredUtils.getLocalFilePaths(filePath) - fileListSize = fileList.size - fileList.foreach { path => - println(s"local path:$path") - curlCommandParams += "-F" - curlCommandParams += s"files=@$path" - } - } - val (output, error): (String, String) = ProcessUtil.executeCommand(curlCommandParams.toSeq) - if (output.nonEmpty) { - println(output) - import spark.implicits._ - if (fileListSize > 1) { - val schema1 = ArrayType( - new StructType() - .add("type", StringType) - .add("element_id", StringType) - .add("text", StringType) - .add("metadata", MapType(StringType, StringType)) - ) - val df = Seq(output).toDS().toDF("json").withColumn("data", functions.from_json($"json", schema1)) - // val df = spark.read.json(Seq(output).toDS()) - // .withColumn("data", functions.explode($"value")) - // .select("data.*") - df.show(10) - } else { - // val schema2 = new StructType() - // .add("type", StringType) - // .add("element_id", StringType) - // .add("text", StringType) - // .add("metadata", MapType(StringType, StringType)) - // val df = Seq(output).toDS().toDF("json").withColumn("data", functions.from_json($"json", schema2)). - val df = spark.read.json(Seq(output).toDS()) - df.show(10) - } - } else { - println(s"########## Exception: $error") - throw new Exception(s"########## Exception: $error") - } - } - -// def test()={ -// val spark = SparkSession.builder() -// .appName("JsonArrayToDataFrame") -// .config("spark.master", "local") -// .getOrCreate() -// -// // 用于示例的 JSON 数组字符串 -// val exampleJsonArrayString1 = -// """[[{"type":"UncategorizedText","element_id":"48f89b630677c2cbb70e2ba05bf7a363","text":"454","metadata":{"languages":["eng"],"page_number":1,"filename":"embedded-images-tables.pdf","filetype":"application/pdf"}},{"type":"Header","element_id":"9ca201e648ed74cfc838b6661f59addf","text":"O. Sanni, A.P.I. Popoola / Data in Brief 22 (2019) 451–457","metadata":{"languages":["eng"],"page_number":1,"filename":"embedded-images-tables.pdf","filetype":"application/pdf"}},{"type":"UncategorizedText","element_id":"f0e5c879f7d220552d8ad5b3503bd038","text":"Fig. 4. Anodic and cathodic polarization curve of stainless steel in 0.5 M H2SO4 solution in the presence and absence of ES.","metadata":{"languages":["eng"],"page_number":1,"parent_id":"9ca201e648ed74cfc838b6661f59addf","filename":"embedded-images-tables.pdf","filetype":"application/pdf"}}],[{"type":"UncategorizedText","element_id":"d54c69149058772f0dbffe267619fe62","text":"ExoFlow: A Universal Workflow System for Exactly-Once DAGs Siyuan Zhuang, UC Berkeley; Stephanie Wang, UC Berkeley and Anyscale; Eric Liang and Yi Cheng, Anyscale; Ion Stoica, UC Berkeley","metadata":{"languages":["eng"],"page_number":1,"filename":"full_text.pdf","filetype":"application/pdf"}},{"type":"Title","element_id":"566b36175e2c048f6f7288b4b6d2792e","text":"https://www.usenix.org/conference/osdi23/presentation/zhuang","metadata":{"languages":["eng"],"page_number":1,"filename":"full_text.pdf","filetype":"application/pdf"}},{"type":"Title","element_id":"416fdc1b946e9213121dcc2f87fc632d","text":"ExoFlow: A Universal Workflow System for Exactly-Once DAGs","metadata":{"languages":["eng"],"page_number":2,"filename":"full_text.pdf","filetype":"application/pdf"}}]] -// """ -// -// // 用于示例的第二种 JSON 数组字符串 -// val exampleJsonArrayString2 = -// """[{"type":"UncategorizedText","element_id":"48f89b630677c2cbb70e2ba05bf7a363","text":"454","metadata":{"languages":["eng"],"page_number":1,"filename":"embedded-images-tables.pdf","filetype":"application/pdf"}},{"type":"Header","element_id":"9ca201e648ed74cfc838b6661f59addf","text":"O. Sanni, A.P.I. Popoola / Data in Brief 22 (2019) 451–457","metadata":{"languages":["eng"],"page_number":1,"filename":"embedded-images-tables.pdf","filetype":"application/pdf"}},{"type":"UncategorizedText","element_id":"f0e5c879f7d220552d8ad5b3503bd038","text":"Fig. 4. Anodic and cathodic polarization curve of stainless steel in 0.5 M H2SO4 solution in the presence and absence of ES.","metadata":{"languages":["eng"],"page_number":1,"parent_id":"9ca201e648ed74cfc838b6661f59addf","filename":"embedded-images-tables.pdf","filetype":"application/pdf"}}] -// """ -// -// val exampleSchema = new StructType() -// .add("type", StringType) -// .add("element_id", StringType) -// .add("text", StringType) -// .add("metadata", MapType(StringType, StringType)) -// -// import spark.implicits._ -// -// // 将第一种格式的 JSON 数组字符串转换为 DataFrame -// val df1 = spark.read.json(Seq(exampleJsonArrayString1).toDS()) -// .withColumn("data", functions.explode($"value")) -// .select("data.*") -// -// // 将第二种格式的 JSON 数组字符串转换为 DataFrame -// val df2 = spark.read.json(Seq(exampleJsonArrayString2).toDS()) -// -// // 将两个 DataFrame 合并为一个 -// val combinedDF = df1.union(df2) -// -// combinedDF.show(false) -// } - -} diff --git a/piflow-core/src/main/scala/cn/piflow/util/UnstructuredUtils.scala b/piflow-core/src/main/scala/cn/piflow/util/UnstructuredUtils.scala index 282dd535..a43e0af9 100644 --- a/piflow-core/src/main/scala/cn/piflow/util/UnstructuredUtils.scala +++ b/piflow-core/src/main/scala/cn/piflow/util/UnstructuredUtils.scala @@ -12,7 +12,8 @@ import scala.collection.mutable.ListBuffer object UnstructuredUtils { def unstructuredHost(): String = { - val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") +// val unstructuredHost: String = PropertyUtil.getPropertyValue("unstructured.host") + val unstructuredHost: String = PropertyUtil.getPropertyValue("server.ip") unstructuredHost } From 72595bc68244bcf810dcf853abac91d41d419044 Mon Sep 17 00:00:00 2001 From: tianyao-0315 Date: Mon, 20 May 2024 10:36:58 +0800 Subject: [PATCH 36/68] #fix: getIcon --- .../src/main/scala/cn/piflow/bundle/excel/ExcelRead.scala | 2 +- .../src/main/scala/cn/piflow/bundle/excel/ExcelWrite.scala | 2 +- .../scala/cn/piflow/bundle/excel/ExcelWriteMultipleSheets.scala | 2 +- .../main/scala/cn/piflow/bundle/unstructured/DocxParser.scala | 2 +- .../main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala | 2 +- .../main/scala/cn/piflow/bundle/unstructured/ImageParser.scala | 2 +- .../main/scala/cn/piflow/bundle/unstructured/PdfParser.scala | 2 +- .../main/scala/cn/piflow/bundle/unstructured/PptxParser.scala | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelRead.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelRead.scala index 3faa7fea..d9495b63 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelRead.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelRead.scala @@ -112,7 +112,7 @@ class ExcelRead extends ConfigurableStop{ } override def getIcon(): Array[Byte] = { - ImageUtil.getImage("icon/excel/excelParse.png",this.getClass.getName) + ImageUtil.getImage("icon/excel/excelParse.png") } override def getGroup(): List[String] = { diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelWrite.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelWrite.scala index 82e2e6dd..1c217bd5 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelWrite.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelWrite.scala @@ -84,7 +84,7 @@ class ExcelWrite extends ConfigurableStop{ } override def getIcon(): Array[Byte] = { - ImageUtil.getImage("icon/excel/excelParse.png",this.getClass.getName) + ImageUtil.getImage("icon/excel/excelParse.png") } override def getGroup(): List[String] = { diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelWriteMultipleSheets.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelWriteMultipleSheets.scala index c9e35f86..34123423 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelWriteMultipleSheets.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/excel/ExcelWriteMultipleSheets.scala @@ -71,7 +71,7 @@ class ExcelWriteMultipleSheets extends ConfigurableStop{ } override def getIcon(): Array[Byte] = { - ImageUtil.getImage("icon/excel/excelParse.png",this.getClass.getName) + ImageUtil.getImage("icon/excel/excelParse.png") } override def getGroup(): List[String] = { diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala index 18c1d61c..84c152ca 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/DocxParser.scala @@ -130,7 +130,7 @@ class DocxParser extends ConfigurableStop { } override def getIcon(): Array[Byte] = { - ImageUtil.getImage("icon/unstructured/DocxParser.png", this.getClass.getName) + ImageUtil.getImage("icon/unstructured/DocxParser.png") } override def getGroup(): List[String] = { diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala index 4a542c9b..ba8bf838 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/HtmlParser.scala @@ -130,7 +130,7 @@ class HtmlParser extends ConfigurableStop { } override def getIcon(): Array[Byte] = { - ImageUtil.getImage("icon/unstructured/HtmlParser.png", this.getClass.getName) + ImageUtil.getImage("icon/unstructured/HtmlParser.png") } override def getGroup(): List[String] = { diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala index 03c87cad..e22c06cc 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/ImageParser.scala @@ -147,7 +147,7 @@ class ImageParser extends ConfigurableStop { } override def getIcon(): Array[Byte] = { - ImageUtil.getImage("icon/unstructured/ImageParser.png", this.getClass.getName) + ImageUtil.getImage("icon/unstructured/ImageParser.png") } override def getGroup(): List[String] = { diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala index 54d9260f..512dcf27 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PdfParser.scala @@ -150,7 +150,7 @@ class PdfParser extends ConfigurableStop { } override def getIcon(): Array[Byte] = { - ImageUtil.getImage("icon/unstructured/PdfParser.png", this.getClass.getName) + ImageUtil.getImage("icon/unstructured/PdfParser.png") } override def getGroup(): List[String] = { diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala index 5c076963..d519549f 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/unstructured/PptxParser.scala @@ -130,7 +130,7 @@ class PptxParser extends ConfigurableStop { } override def getIcon(): Array[Byte] = { - ImageUtil.getImage("icon/unstructured/PptxParser.png", this.getClass.getName) + ImageUtil.getImage("icon/unstructured/PptxParser.png") } override def getGroup(): List[String] = { From dac80bda7715ca321839080e96babfbddfa3249b Mon Sep 17 00:00:00 2001 From: tianyao-0315 Date: Tue, 23 Jul 2024 17:02:23 +0800 Subject: [PATCH 37/68] #embed --- doc/embed/embed.zip | Bin 0 -> 58231 bytes .../cn/piflow/bundle/csv/ParquetSave.scala | 58 ++++++++ .../piflow/bundle/script/DockerExecute.scala | 45 +++--- .../normalization/DiscretizationTest.scala | 104 ++++++------- .../MaxMinNormalizationTest.scala | 140 +++++++++--------- .../ScopeNormalizationTest.scala | 104 ++++++------- .../bundle/normalization/ZScoreTest.scala | 104 ++++++------- 7 files changed, 310 insertions(+), 245 deletions(-) create mode 100644 doc/embed/embed.zip create mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/csv/ParquetSave.scala diff --git a/doc/embed/embed.zip b/doc/embed/embed.zip new file mode 100644 index 0000000000000000000000000000000000000000..e033459ccf89360f9c29f49db7be8e3394899737 GIT binary patch literal 58231 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

tu*YC1@3g9nzOXv<8$S?31>$wUFTw+s# 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 QM1p*qA@5V&`d?@N1I6HOD*ylh literal 0 HcmV?d00001 diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/csv/ParquetSave.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/csv/ParquetSave.scala new file mode 100644 index 00000000..0e418002 --- /dev/null +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/csv/ParquetSave.scala @@ -0,0 +1,58 @@ +package cn.piflow.bundle.csv + +import cn.piflow.conf.bean.PropertyDescriptor +import cn.piflow.conf.util.{ImageUtil, MapUtil} +import cn.piflow.conf.{ConfigurableStop, Port, StopGroup} +import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} + +class ParquetSave extends ConfigurableStop { + override val authorEmail: String = "tianyao@cnic.cn" + val inportList: List[String] = List(Port.DefaultPort) + val outportList: List[String] = List(Port.DefaultPort) + override val description: String = "parquet save" + + var outPath: String = _ + + override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { + + val df = in.read() + // 将DataFrame写入Parquet文件 + df.write + .mode("overwrite") // 指定写入模式,这里是覆盖已存在的文件 + .parquet(outPath) + } + + + override def setProperties(map: Map[String, Any]): Unit = { + outPath = MapUtil.get(map, "outPath").asInstanceOf[String] + } + + override def getPropertyDescriptor(): List[PropertyDescriptor] = { + var descriptor: List[PropertyDescriptor] = List() + + val outPath = new PropertyDescriptor() + .name("outPath") + .displayName("outPath") + .defaultValue("") + .required(true) + .example("1,zs\n2,ls\n3,ww") + + descriptor = outPath :: descriptor + + descriptor + + } + + override def getIcon(): Array[Byte] = { + ImageUtil.getImage("icon/basic/common.png") + } + + override def getGroup(): List[String] = { + List(StopGroup.CsvGroup) + } + + override def initialize(ctx: ProcessContext): Unit = { + + } + +} diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/script/DockerExecute.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/script/DockerExecute.scala index a50e84dd..8e3f7cf5 100644 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/script/DockerExecute.scala +++ b/piflow-bundle/src/main/scala/cn/piflow/bundle/script/DockerExecute.scala @@ -6,20 +6,20 @@ import cn.piflow.conf.bean.PropertyDescriptor import cn.piflow.conf.util.{ImageUtil, MapUtil} import cn.piflow.util.PropertyUtil import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} -import org.apache.spark.sql.SparkSession +import org.apache.spark.sql.{SaveMode, SparkSession} -class DockerExecute extends ConfigurableStop{ +class DockerExecute extends ConfigurableStop { val authorEmail: String = "ygang@cnic.cn" val description: String = "docker runs Python" val inportList: List[String] = List(Port.AnyPort) val outportList: List[String] = List(Port.AnyPort) - var outports : List[String] = _ - var inports : List[String] = _ + var outports: List[String] = _ + var inports: List[String] = _ - var ymlContent:String =_ + var ymlContent: String = _ override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { val spark = pec.get[SparkSession]() @@ -34,37 +34,44 @@ class DockerExecute extends ConfigurableStop{ ymlContent = ymlContent.replace("piflow_hdfs_url", PropertyUtil.getPropertyValue("hdfs.web.url")) .replace("piflow_extra_hosts", stringBuffer.toString) + val embedModelsPath = PropertyUtil.getPropertyValue("embed_models_path") + if (embedModelsPath != null) { + ymlContent = ymlContent.replace("embed_models_path", embedModelsPath) + } println(ymlContent) - + DockerStreamUtil.execRuntime("mkdir app") - val ymlName = uuid+".yml" + val ymlName = uuid + ".yml" println("执行命令:=============================执行创建app文件夹命令=================") DockerStreamUtil.execRuntime(s"echo '${ymlContent}'> app/${ymlName}") - val dockerShellString=s"docker-compose -f app/${ymlName} up" - val dockerDownShellString=s"docker-compose -f app/${ymlName} down" + val dockerShellString = s"docker-compose -f app/${ymlName} up --force-recreate" + val dockerDownShellString = s"docker-compose -f app/${ymlName} down" val inputPath = "/piflow/docker/" + appID + s"/inport_${uuid}/" val outputPath = "/piflow/docker/" + appID + s"/outport_${uuid}/" val inputPathStringBuffer = new StringBuffer() - if(!(inports.contains("Default") || inports.contains("DefaultPort"))){ + if (!(inports.contains("Default") || inports.contains("DefaultPort"))) { inports.foreach(x => { - println("输入端口:============================="+x+"=================") + println("输入端口:=============================" + x + "=================") val hdfsSavePath = inputPath + x inputPathStringBuffer.append(hdfsSavePath + ",") - in.read(x).write.format("csv").mode("overwrite") - .option("delimiter", "\t") - .option("header", true).save(hdfsSavePath) + // in.read(x).write.format("csv").mode("overwrite") + // .option("delimiter", "\t") + // .option("header", true).save(hdfsSavePath) + in.read(x).write + .mode("overwrite") // 指定写入模式,这里是覆盖已存在的文件 + .parquet(hdfsSavePath) }) println("执行命令:======================输入路径写入app/inputPath.txt 文件========================") DockerStreamUtil.execRuntime(s"echo ${inputPath}> app/inputPath.txt") } - if(!(outports.contains("Default") || outports.contains("DefaultPort"))){ + if (!(outports.contains("Default") || outports.contains("DefaultPort"))) { println("执行命令:======================输出路径写入app/outputPath.txt 文件========================") DockerStreamUtil.execRuntime(s"echo ${outputPath}> app/outputPath.txt") } @@ -72,9 +79,9 @@ class DockerExecute extends ConfigurableStop{ println("执行命令:======================创建镜像命令========================") DockerStreamUtil.execRuntime(dockerShellString) - if(!(outports.contains("Default") || outports.contains("DefaultPort"))){ + if (!(outports.contains("Default") || outports.contains("DefaultPort"))) { outports.foreach(x => { - println("输出端口:============================="+x+"=================") + println("输出端口:=============================" + x + "=================") val outDF = spark.read.format("csv") .option("header", true) .option("mode", "FAILFAST") @@ -92,7 +99,7 @@ class DockerExecute extends ConfigurableStop{ val inportStr = MapUtil.get(map, "inports").asInstanceOf[String] inports = inportStr.split(",").map(x => x.trim).toList - ymlContent =MapUtil.get(map, key = "ymlContent").asInstanceOf[String] + ymlContent = MapUtil.get(map, key = "ymlContent").asInstanceOf[String] } @@ -102,7 +109,7 @@ class DockerExecute extends ConfigurableStop{ override def getPropertyDescriptor(): List[PropertyDescriptor] = { - var descriptor : List[PropertyDescriptor] = List() + var descriptor: List[PropertyDescriptor] = List() val inports = new PropertyDescriptor() .name("inports") .displayName("Inports") diff --git a/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/DiscretizationTest.scala b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/DiscretizationTest.scala index 70574cae..745b8d90 100644 --- a/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/DiscretizationTest.scala +++ b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/DiscretizationTest.scala @@ -1,52 +1,52 @@ -package cn.piflow.bundle.normalization - -import cn.piflow.Runner -import cn.piflow.conf.bean.FlowBean -import cn.piflow.conf.util.{FileUtil, OptionUtil} -import cn.piflow.util.PropertyUtil -import org.apache.spark.sql.SparkSession -import org.h2.tools.Server -import org.junit.Test - -import scala.util.parsing.json.JSON - -class DiscretizationTest { - - @Test - def DiscretizationFlow(): Unit = { - - //parse flow json - val file = "src/main/resources/flow/normalization/Discretization.json" - val flowJsonStr = FileUtil.fileReader(file) - val map = OptionUtil.getAny(JSON.parseFull(flowJsonStr)).asInstanceOf[Map[String, Any]] - println(map) - - //create flow - val flowBean = FlowBean(map) - val flow = flowBean.constructFlow() - - val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "50001").start() - - //execute flow - val spark = SparkSession.builder() - .master("local[*]") - .appName("DiscretizationTest") - .config("spark.driver.memory", "1g") - .config("spark.executor.memory", "2g") - .config("spark.cores.max", "2") - .config("hive.metastore.uris",PropertyUtil.getPropertyValue("hive.metastore.uris")) - .enableHiveSupport() - .getOrCreate() - - val process = Runner.create() - .bind(classOf[SparkSession].getName, spark) - .bind("checkpoint.path", "") - .bind("debug.path","") - .start(flow); - - process.awaitTermination(); - val pid = process.pid(); - println(pid + "!!!!!!!!!!!!!!!!!!!!!") - spark.close(); - } -} \ No newline at end of file +//package cn.piflow.bundle.normalization +// +//import cn.piflow.Runner +//import cn.piflow.conf.bean.FlowBean +//import cn.piflow.conf.util.{FileUtil, OptionUtil} +//import cn.piflow.util.PropertyUtil +//import org.apache.spark.sql.SparkSession +//import org.h2.tools.Server +//import org.junit.Test +// +//import scala.util.parsing.json.JSON +// +//class DiscretizationTest { +// +// @Test +// def DiscretizationFlow(): Unit = { +// +// //parse flow json +// val file = "src/main/resources/flow/normalization/Discretization.json" +// val flowJsonStr = FileUtil.fileReader(file) +// val map = OptionUtil.getAny(JSON.parseFull(flowJsonStr)).asInstanceOf[Map[String, Any]] +// println(map) +// +// //create flow +// val flowBean = FlowBean(map) +// val flow = flowBean.constructFlow() +// +// val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "50001").start() +// +// //execute flow +// val spark = SparkSession.builder() +// .master("local[*]") +// .appName("DiscretizationTest") +// .config("spark.driver.memory", "1g") +// .config("spark.executor.memory", "2g") +// .config("spark.cores.max", "2") +// .config("hive.metastore.uris",PropertyUtil.getPropertyValue("hive.metastore.uris")) +// .enableHiveSupport() +// .getOrCreate() +// +// val process = Runner.create() +// .bind(classOf[SparkSession].getName, spark) +// .bind("checkpoint.path", "") +// .bind("debug.path","") +// .start(flow); +// +// process.awaitTermination(); +// val pid = process.pid(); +// println(pid + "!!!!!!!!!!!!!!!!!!!!!") +// spark.close(); +// } +//} \ No newline at end of file diff --git a/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/MaxMinNormalizationTest.scala b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/MaxMinNormalizationTest.scala index 981e4b4c..03d9a024 100644 --- a/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/MaxMinNormalizationTest.scala +++ b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/MaxMinNormalizationTest.scala @@ -1,101 +1,101 @@ +////package cn.piflow.bundle.normalization +//// +////import cn.piflow.Runner +////import cn.piflow.conf.bean.FlowBean +////import cn.piflow.conf.util.{FileUtil, OptionUtil} +////import org.apache.spark.sql.SparkSession +////import org.junit.Test +////import scala.util.parsing.json.JSON +//// +////class MaxMinNormalizationTest { +//// +//// @Test +//// def MaxMinNormalizationTest(): Unit = { +//// // Parse flow JSON +//// val file = "src/main/resources/flow/normalization/MaxMinNormalization.json" +//// val flowJsonStr = FileUtil.fileReader(file) +//// val map = OptionUtil.getAny(JSON.parseFull(flowJsonStr)).asInstanceOf[Map[String, Any]] +//// println(map) +//// +//// // Create SparkSession +//// val spark = SparkSession.builder() +//// .master("local[*]") +//// .appName("MaxMinNormalizationTest") +//// .config("spark.driver.memory", "1g") +//// .config("spark.executor.memory", "2g") +//// .config("spark.cores.max", "2") +//// .getOrCreate() +//// +//// // Create flow +//// val flowBean = FlowBean(map) +//// val flow = flowBean.constructFlow() +//// +//// // Execute flow +//// val process = Runner.create() +//// .bind(classOf[SparkSession].getName, spark) +//// .bind("checkpoint.path", "") +//// .bind("debug.path", "") +//// .start(flow) +//// +//// process.awaitTermination() +//// val pid = process.pid() +//// println(s"Flow execution completed. PID: $pid") +//// +//// // Close SparkSession +//// spark.close() +//// } +////} +// +// //package cn.piflow.bundle.normalization // //import cn.piflow.Runner //import cn.piflow.conf.bean.FlowBean //import cn.piflow.conf.util.{FileUtil, OptionUtil} +//import cn.piflow.util.PropertyUtil //import org.apache.spark.sql.SparkSession +//import org.h2.tools.Server //import org.junit.Test +// //import scala.util.parsing.json.JSON // //class MaxMinNormalizationTest { // // @Test -// def MaxMinNormalizationTest(): Unit = { -// // Parse flow JSON +// def MaxMinNormalizationFlow(): Unit = { +// +// //parse flow json // val file = "src/main/resources/flow/normalization/MaxMinNormalization.json" // val flowJsonStr = FileUtil.fileReader(file) // val map = OptionUtil.getAny(JSON.parseFull(flowJsonStr)).asInstanceOf[Map[String, Any]] // println(map) // -// // Create SparkSession +// //create flow +// val flowBean = FlowBean(map) +// val flow = flowBean.constructFlow() +// +// val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "50001").start() +// +// //execute flow // val spark = SparkSession.builder() // .master("local[*]") // .appName("MaxMinNormalizationTest") // .config("spark.driver.memory", "1g") // .config("spark.executor.memory", "2g") // .config("spark.cores.max", "2") +// .config("hive.metastore.uris",PropertyUtil.getPropertyValue("hive.metastore.uris")) +// .enableHiveSupport() // .getOrCreate() // -// // Create flow -// val flowBean = FlowBean(map) -// val flow = flowBean.constructFlow() -// -// // Execute flow // val process = Runner.create() // .bind(classOf[SparkSession].getName, spark) // .bind("checkpoint.path", "") -// .bind("debug.path", "") -// .start(flow) -// -// process.awaitTermination() -// val pid = process.pid() -// println(s"Flow execution completed. PID: $pid") +// .bind("debug.path","") +// .start(flow); // -// // Close SparkSession -// spark.close() +// process.awaitTermination(); +// val pid = process.pid(); +// println(pid + "!!!!!!!!!!!!!!!!!!!!!") +// spark.close(); // } //} - - -package cn.piflow.bundle.normalization - -import cn.piflow.Runner -import cn.piflow.conf.bean.FlowBean -import cn.piflow.conf.util.{FileUtil, OptionUtil} -import cn.piflow.util.PropertyUtil -import org.apache.spark.sql.SparkSession -import org.h2.tools.Server -import org.junit.Test - -import scala.util.parsing.json.JSON - -class MaxMinNormalizationTest { - - @Test - def MaxMinNormalizationFlow(): Unit = { - - //parse flow json - val file = "src/main/resources/flow/normalization/MaxMinNormalization.json" - val flowJsonStr = FileUtil.fileReader(file) - val map = OptionUtil.getAny(JSON.parseFull(flowJsonStr)).asInstanceOf[Map[String, Any]] - println(map) - - //create flow - val flowBean = FlowBean(map) - val flow = flowBean.constructFlow() - - val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "50001").start() - - //execute flow - val spark = SparkSession.builder() - .master("local[*]") - .appName("MaxMinNormalizationTest") - .config("spark.driver.memory", "1g") - .config("spark.executor.memory", "2g") - .config("spark.cores.max", "2") - .config("hive.metastore.uris",PropertyUtil.getPropertyValue("hive.metastore.uris")) - .enableHiveSupport() - .getOrCreate() - - val process = Runner.create() - .bind(classOf[SparkSession].getName, spark) - .bind("checkpoint.path", "") - .bind("debug.path","") - .start(flow); - - process.awaitTermination(); - val pid = process.pid(); - println(pid + "!!!!!!!!!!!!!!!!!!!!!") - spark.close(); - } -} diff --git a/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ScopeNormalizationTest.scala b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ScopeNormalizationTest.scala index 77d2dcb9..965067b5 100644 --- a/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ScopeNormalizationTest.scala +++ b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ScopeNormalizationTest.scala @@ -1,52 +1,52 @@ -package cn.piflow.bundle.normalization - -import cn.piflow.Runner -import cn.piflow.conf.bean.FlowBean -import cn.piflow.conf.util.{FileUtil, OptionUtil} -import cn.piflow.util.PropertyUtil -import org.apache.spark.sql.SparkSession -import org.h2.tools.Server -import org.junit.Test - -import scala.util.parsing.json.JSON - -class ScopeNormalizationTest { - - @Test - def ScopeNormalizationFlow(): Unit = { - - //parse flow json - val file = "src/main/resources/flow/normalization/ScopeNormalization.json" - val flowJsonStr = FileUtil.fileReader(file) - val map = OptionUtil.getAny(JSON.parseFull(flowJsonStr)).asInstanceOf[Map[String, Any]] - println(map) - - //create flow - val flowBean = FlowBean(map) - val flow = flowBean.constructFlow() - - val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "50001").start() - - //execute flow - val spark = SparkSession.builder() - .master("local[*]") - .appName("MaxMinNormalizationTest") - .config("spark.driver.memory", "1g") - .config("spark.executor.memory", "2g") - .config("spark.cores.max", "2") - .config("hive.metastore.uris",PropertyUtil.getPropertyValue("hive.metastore.uris")) - .enableHiveSupport() - .getOrCreate() - - val process = Runner.create() - .bind(classOf[SparkSession].getName, spark) - .bind("checkpoint.path", "") - .bind("debug.path","") - .start(flow); - - process.awaitTermination(); - val pid = process.pid(); - println(pid + "!!!!!!!!!!!!!!!!!!!!!") - spark.close(); - } -} +//package cn.piflow.bundle.normalization +// +//import cn.piflow.Runner +//import cn.piflow.conf.bean.FlowBean +//import cn.piflow.conf.util.{FileUtil, OptionUtil} +//import cn.piflow.util.PropertyUtil +//import org.apache.spark.sql.SparkSession +//import org.h2.tools.Server +//import org.junit.Test +// +//import scala.util.parsing.json.JSON +// +//class ScopeNormalizationTest { +// +// @Test +// def ScopeNormalizationFlow(): Unit = { +// +// //parse flow json +// val file = "src/main/resources/flow/normalization/ScopeNormalization.json" +// val flowJsonStr = FileUtil.fileReader(file) +// val map = OptionUtil.getAny(JSON.parseFull(flowJsonStr)).asInstanceOf[Map[String, Any]] +// println(map) +// +// //create flow +// val flowBean = FlowBean(map) +// val flow = flowBean.constructFlow() +// +// val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "50001").start() +// +// //execute flow +// val spark = SparkSession.builder() +// .master("local[*]") +// .appName("MaxMinNormalizationTest") +// .config("spark.driver.memory", "1g") +// .config("spark.executor.memory", "2g") +// .config("spark.cores.max", "2") +// .config("hive.metastore.uris",PropertyUtil.getPropertyValue("hive.metastore.uris")) +// .enableHiveSupport() +// .getOrCreate() +// +// val process = Runner.create() +// .bind(classOf[SparkSession].getName, spark) +// .bind("checkpoint.path", "") +// .bind("debug.path","") +// .start(flow); +// +// process.awaitTermination(); +// val pid = process.pid(); +// println(pid + "!!!!!!!!!!!!!!!!!!!!!") +// spark.close(); +// } +//} diff --git a/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ZScoreTest.scala b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ZScoreTest.scala index a9d0c7b8..12587327 100644 --- a/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ZScoreTest.scala +++ b/piflow-bundle/src/test/scala/cn/piflow/bundle/normalization/ZScoreTest.scala @@ -1,52 +1,52 @@ -package cn.piflow.bundle.normalization - -import cn.piflow.Runner -import cn.piflow.conf.bean.FlowBean -import cn.piflow.conf.util.{FileUtil, OptionUtil} -import cn.piflow.util.PropertyUtil -import org.apache.spark.sql.SparkSession -import org.h2.tools.Server -import org.junit.Test - -import scala.util.parsing.json.JSON - -class ZScoreTest { - - @Test - def ZScoreFlow(): Unit = { - - //parse flow json - val file = "src/main/resources/flow/normalization/ZScore.json" - val flowJsonStr = FileUtil.fileReader(file) - val map = OptionUtil.getAny(JSON.parseFull(flowJsonStr)).asInstanceOf[Map[String, Any]] - println(map) - - //create flow - val flowBean = FlowBean(map) - val flow = flowBean.constructFlow() - - val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "50001").start() - - //execute flow - val spark = SparkSession.builder() - .master("local[*]") - .appName("ZScoreTest") - .config("spark.driver.memory", "1g") - .config("spark.executor.memory", "2g") - .config("spark.cores.max", "2") - .config("hive.metastore.uris",PropertyUtil.getPropertyValue("hive.metastore.uris")) - .enableHiveSupport() - .getOrCreate() - - val process = Runner.create() - .bind(classOf[SparkSession].getName, spark) - .bind("checkpoint.path", "") - .bind("debug.path","") - .start(flow); - - process.awaitTermination(); - val pid = process.pid(); - println(pid + "!!!!!!!!!!!!!!!!!!!!!") - spark.close(); - } -} \ No newline at end of file +//package cn.piflow.bundle.normalization +// +//import cn.piflow.Runner +//import cn.piflow.conf.bean.FlowBean +//import cn.piflow.conf.util.{FileUtil, OptionUtil} +//import cn.piflow.util.PropertyUtil +//import org.apache.spark.sql.SparkSession +//import org.h2.tools.Server +//import org.junit.Test +// +//import scala.util.parsing.json.JSON +// +//class ZScoreTest { +// +// @Test +// def ZScoreFlow(): Unit = { +// +// //parse flow json +// val file = "src/main/resources/flow/normalization/ZScore.json" +// val flowJsonStr = FileUtil.fileReader(file) +// val map = OptionUtil.getAny(JSON.parseFull(flowJsonStr)).asInstanceOf[Map[String, Any]] +// println(map) +// +// //create flow +// val flowBean = FlowBean(map) +// val flow = flowBean.constructFlow() +// +// val h2Server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "50001").start() +// +// //execute flow +// val spark = SparkSession.builder() +// .master("local[*]") +// .appName("ZScoreTest") +// .config("spark.driver.memory", "1g") +// .config("spark.executor.memory", "2g") +// .config("spark.cores.max", "2") +// .config("hive.metastore.uris",PropertyUtil.getPropertyValue("hive.metastore.uris")) +// .enableHiveSupport() +// .getOrCreate() +// +// val process = Runner.create() +// .bind(classOf[SparkSession].getName, spark) +// .bind("checkpoint.path", "") +// .bind("debug.path","") +// .start(flow); +// +// process.awaitTermination(); +// val pid = process.pid(); +// println(pid + "!!!!!!!!!!!!!!!!!!!!!") +// spark.close(); +// } +//} \ No newline at end of file From 0066fbd4b4d68b462826b13fc03caed00c10df10 Mon Sep 17 00:00:00 2001 From: tianyao-0315 Date: Tue, 23 Jul 2024 17:07:42 +0800 Subject: [PATCH 38/68] #embed --- .../cn/piflow/bundle/csv/ParquetSave.scala | 58 ------------------- 1 file changed, 58 deletions(-) delete mode 100644 piflow-bundle/src/main/scala/cn/piflow/bundle/csv/ParquetSave.scala diff --git a/piflow-bundle/src/main/scala/cn/piflow/bundle/csv/ParquetSave.scala b/piflow-bundle/src/main/scala/cn/piflow/bundle/csv/ParquetSave.scala deleted file mode 100644 index 0e418002..00000000 --- a/piflow-bundle/src/main/scala/cn/piflow/bundle/csv/ParquetSave.scala +++ /dev/null @@ -1,58 +0,0 @@ -package cn.piflow.bundle.csv - -import cn.piflow.conf.bean.PropertyDescriptor -import cn.piflow.conf.util.{ImageUtil, MapUtil} -import cn.piflow.conf.{ConfigurableStop, Port, StopGroup} -import cn.piflow.{JobContext, JobInputStream, JobOutputStream, ProcessContext} - -class ParquetSave extends ConfigurableStop { - override val authorEmail: String = "tianyao@cnic.cn" - val inportList: List[String] = List(Port.DefaultPort) - val outportList: List[String] = List(Port.DefaultPort) - override val description: String = "parquet save" - - var outPath: String = _ - - override def perform(in: JobInputStream, out: JobOutputStream, pec: JobContext): Unit = { - - val df = in.read() - // 将DataFrame写入Parquet文件 - df.write - .mode("overwrite") // 指定写入模式,这里是覆盖已存在的文件 - .parquet(outPath) - } - - - override def setProperties(map: Map[String, Any]): Unit = { - outPath = MapUtil.get(map, "outPath").asInstanceOf[String] - } - - override def getPropertyDescriptor(): List[PropertyDescriptor] = { - var descriptor: List[PropertyDescriptor] = List() - - val outPath = new PropertyDescriptor() - .name("outPath") - .displayName("outPath") - .defaultValue("") - .required(true) - .example("1,zs\n2,ls\n3,ww") - - descriptor = outPath :: descriptor - - descriptor - - } - - override def getIcon(): Array[Byte] = { - ImageUtil.getImage("icon/basic/common.png") - } - - override def getGroup(): List[String] = { - List(StopGroup.CsvGroup) - } - - override def initialize(ctx: ProcessContext): Unit = { - - } - -} From fb6b14b06b17bdc83d92fda47bf0c54cc0340c45 Mon Sep 17 00:00:00 2001 From: tianyao-0315 Date: Wed, 24 Jul 2024 11:55:18 +0800 Subject: [PATCH 39/68] #embed --- doc/embed/embed.zip | Bin 58231 -> 58236 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/embed/embed.zip b/doc/embed/embed.zip index e033459ccf89360f9c29f49db7be8e3394899737..43cd73fbbd265ff9e760883154cbe0f4919fa8a0 100644 GIT binary patch delta 1245 zcmex1>KrakwaFW`0;9qbNmqp-1DAvbQ38Mcx{oU0K<)X!$pRC%K<~ zi_M&v;#sySd(Fe2ZJ)n?loq=;^$f@EiO~yn?_ZnUyKT0UN5ZZ(bNcJwWOBzUepwRJ z9F)PL#&lcEVD6kF-r>`>UM-w|x1r}8`=9m#kJ8eQZ+`9S=KL)uR#$91x5VvEctpde z<8r%2?*(1e3+dF@FllSVqX~~cJ^Fbxxkcs3yDMToto!tf%;sKT&tQqGEMF}8!?mN% zYT`KwpQUr3hE2K9G_~Wl>zTTh9QER9oe#R6zDZ9ne6_Ws=yY=(CwH#$A^vmcZ~x)q zDtleZvTjSyNy&3!&vl>m>e}EPL(91MNg6A9Y>1zxz(# zuRk_n{vxBtEsu_QCQdpe>2tbs!km52E}T|)zk62p>V)gxiVr=PSuI_DT67i5p4Ags zIUZ~^__cIF@Xz9SXR9rSS<`Ip{;}o^{ZqHOBetJSc$AmA6n!AsibVYV^_!wlG+*1?|OKd-ASg+N1ZNm0YhskFu)eNVd%*~De zz#H*_DO}M~=+GQqD=+uS7av^Ymevwiu*?k7xZ3Mgd+e!?w$!@D6Cr-rLYfW;En1M8 zDZ|eE+-l28?zGr9KkbyvxgW8;3u4&)d)wt{tUhO@XBSUSSQ55zzxiV;hWpK zo_aAlZ_c^e%f%M`WUpcA-O2y&i@9LtSQVgh5KsVOH+w|>3fh>a1lP>{{ zF`Uf)D2GvHa>*k_w#D`dK~;Ar&wga09(0v~!8xNSKQ|Fr)*!oe)%p#$RsbzBXL%e4 vbji0zCX6DJwI8dg-QAJJ3v$V`d$sFc+y=RXl?~_&1}-4n3@pGl-v{vk;<7`! delta 1265 zcmex!jQRU9<_!V%^-(3?Bd%UlKNHT(z@Wm;z`()4z>t=hSzN4FP&qf`Y@W2az&`E^ z)&ieWuLp?vU7FmWn{dP|OTmNxoUZ^!*PN*x1t(cgZe1#}ljWr0*_E|D3d_F0FVvSH?lFBVTpW>g~f@xQ*Ql4i z*m%-Rx?kd-X>0t|uuXHO_IBo~-bvwntZzO;c<%ZZP6N5E6<==G z>(#w>e*R>tq`HW?AJ=4&a|scCO;5g0~zc~G5*EanhTsjqv z$@67QYES)|>B)YkqvFe-S)VY$+X`w}(>OZ{eDKHj}fy#4mkPka-yr9OUp$G`W? zs)U~t3f%Uu&ka33`-S5aPFuI1F2aWd116U|pP~6)Yu&3;8J)orlj;NXnO)|b&zn?n zyY7qW4~h3?E3aFe`S&~V;Hqb`@s}bmANbXF@a7cB4V=%!r8z!tcD0)0Kj-evzXcL+ zr-!pozjagPo$Io~NzbYZBfejJTUXLwld!6AS@JF7Wvb%EIjjr}>x38>xPck5 zd~_bj-SP=N6-l)*inzKsvyikx8CG1gMUK0W%w`0L4K-0f^n~ z5t*6`EW*IR$RNS+Wob;#DWFLZdUD(Y6UM`nCqGbRtFyX3<@_C>fY{^<59AoHPJaJD zosC1(vi{Va$ubX37&9jaK2%P=Y#TKX+XX>0RVwZNyGpE From 642835bcc8cee4925f6fe1796b0551f4223892d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=BB=A7=E9=BE=99?= Date: Wed, 18 Sep 2024 14:27:17 +0800 Subject: [PATCH 40/68] fix: typo in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 80c5b909..0f5b6c88 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ * Spark-3.4.0 * Hadoop-3.3.0 -Compatible with X86 architecture and ARM architecture, Support center OS and Kirin system deployment +Compatible with X86 architecture and ARM architecture, Support CentOS and Kirin system deployment ## Getting Started From 10f0846f3f6383d4de43d3e5edb1cbca401972ed Mon Sep 17 00:00:00 2001 From: tianyao-0315 Date: Fri, 20 Sep 2024 16:51:16 +0800 Subject: [PATCH 41/68] #embed location --- python/embed/xx.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 python/embed/xx.py diff --git a/python/embed/xx.py b/python/embed/xx.py new file mode 100644 index 00000000..e69de29b From b0e9c442724bb5016805437e2ff6637648a694fc Mon Sep 17 00:00:00 2001 From: tianyao-0315 Date: Fri, 20 Sep 2024 17:45:45 +0800 Subject: [PATCH 42/68] #embed location --- python/embed/{xx.py => README.md} | 0 python/embed/pinecone/README.md | 0 python/embed/qdrant/README.md | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename python/embed/{xx.py => README.md} (100%) create mode 100644 python/embed/pinecone/README.md create mode 100644 python/embed/qdrant/README.md diff --git a/python/embed/xx.py b/python/embed/README.md similarity index 100% rename from python/embed/xx.py rename to python/embed/README.md diff --git a/python/embed/pinecone/README.md b/python/embed/pinecone/README.md new file mode 100644 index 00000000..e69de29b diff --git a/python/embed/qdrant/README.md b/python/embed/qdrant/README.md new file mode 100644 index 00000000..e69de29b From 92cd35bbaed858e36e14296853963706fcdf3890 Mon Sep 17 00:00:00 2001 From: leishu Date: Tue, 24 Sep 2024 21:25:48 +0800 Subject: [PATCH 43/68] =?UTF-8?q?qdrant=E5=90=91=E9=87=8F=E5=8C=96python?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- python/embed/qdrant/README.md | 274 +++++++++++++++++++++++++++++++++ python/embed/qdrant/README.pdf | Bin 0 -> 1152875 bytes python/embed/qdrant/qdrant.png | Bin 0 -> 14454 bytes 3 files changed, 274 insertions(+) create mode 100644 python/embed/qdrant/README.pdf create mode 100644 python/embed/qdrant/qdrant.png diff --git a/python/embed/qdrant/README.md b/python/embed/qdrant/README.md index e69de29b..f9f9af9b 100644 --- a/python/embed/qdrant/README.md +++ b/python/embed/qdrant/README.md @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +---- + +
目录
+ +---- + +[TOC] + +---- + + + +# Qdrant 向量数据库存储组件使用说明 + +## 1. 组件简介 + +该组件基于 Qdrant 向量数据库,专门为 `πFlow` 系统开发,旨在处理 `PdfParser`、`ImageParser` 等解析器生成的非结构化数据(如文本和图像),将其转换为向量并存储到 Qdrant 中。该组件支持通过不同的嵌入模型进行向量化处理,并提供高效的存储、检索解决方案,以满足大规模数据(如用于大模型训练)的存储和检索需求。 + +### 主要功能: +- **向量化非结构化数据**:通过 Hugging Face 预训练模型将文本或图像转换为向量。 +- **数据批量写入**:支持批量写入到 Qdrant 数据库,优化数据存储效率。 +- **多种距离度量支持**:支持多种向量相似度计算方法(欧几里得距离、余弦相似度、点积等)。 +- **集成数据流**:与 `DATAConnect` 集成,读取数据并进行处理和存储。 + +--- + +## 2. 环境要求 + +### 依赖项 + +- **Python 版本**:需要 Python 3.10 或更高版本。 +- **Qdrant 向量数据库环境**: + +- **所需python库**: + - `qdrant-client`:用于连接和操作 Qdrant 向量数据库 + - `transformers`:用于加载 Hugging Face 的预训练模型 + - `pandas`:用于数据处理 + - `langchain_huggingface`:用于嵌入向量生成 + - 其他依赖:`sys`、`warnings` + +### Qdrant 向量数据库: +- **本地实例**:可以使用本地数据库,或者通过 Docker 运行 Qdrant 实例。 + +- **远程实例**:支持通过指定 `host` 和 `port` 连接远程 Qdrant 实例。 + +- **Docker运行 Qdrant 示例:** 建议使用 Docker 来搭建 Qdrant 环境。可以使用以下命令来运行最新版本的 Qdrant Docker 镜像: + + ```bash + docker run -it qdrant/qdrant:latest -p 6333:6333 -p 6334:6334 + ``` + + 该命令会启动 Qdrant 实例,并将本地的 6333 和 6334 端口映射到 Docker 容器中的相应端口。可以通过web访问http://localhost:6333/dashboard,查看qdrant数据库状态. + + ![image-20240916135327817](/home/leishu/.config/Typora/typora-user-images/image-20240916135327817.png) + +--- + +## 3. 参数说明 + +组件通过命令行参数接收配置参数。以下是各参数的详细说明: + +| 参数名 | 类型 | 默认值 | 说明 | +| ----------------- | ----- | -------------------- | ------------------------------------------------------------ | +| `collection_name` | `str` | `default_collection` | Qdrant 中的集合名称,用于存储向量化数据。 | +| `batch_size` | `int` | `100` | 批量写入 Qdrant 的数据条数。 | +| `host` | `str` | `127.0.0.1` | 连接的 Qdrant 数据库主机地址。 | +| `port` | `int` | `6333` | Qdrant 数据库的端口号。 | +| `grpc_port` | `int` | `6334` | Qdrant gRPC 服务的端口号。 | +| `embed_model` | `str` | `all_MiniLM_L6_v2` | 使用的文本嵌入模型。 | +| `distance_metric` | `str` | `cosine` | 向量距离度量方式,支持 `cosine`、`euclid`、`dot`、`manhattan`。 | + +### 支持的嵌入模型: +支持 Hugging Face 上的多种预训练模型,如 `all-MiniLM-L6-v2`、`all-roberta-large-v1`、`sentence-t5-xl` 等。 + +以下是已集成的向量化模型表格: + +| 序号 | 名称 | 参数 | 介绍 | +| :--: | :----------------------------------------------------------: | :---------------------------------------: | :----------------------------------------------------------: | +| 1 | `sentence-transformers/all-MiniLM-L6-v2` | `all_MiniLM_L6_v2` | 通用文本嵌入(GTE)模型:将句子和段落映射到384维的密集向量空间,可以用于聚类或语义搜索等任务。 | +| 2 | `sentence-transformers/all-roberta-large-v1` | `all-roberta-large-v1` | 通用文本嵌入(GTE)模型:将句子和段落映射到1024维的密集向量空间,可以用于聚类或语义搜索等任务。 | +| 3 | `sentence-transformers/average_word_embeddings_glove.840B.300d` | `average_word_embeddings_glove.840B.300d` | 通用文本嵌入(GTE)模型:将句子和段落映射到300维的密集向量空间,可以用于聚类或语义搜索等任务。 | +| 4 | `thenlper/gte-small` | `gte-small` | 通用文本嵌入(GTE)模型:基于多阶段对比学习的通用文本嵌入,由阿里巴巴达摩学院训练。 | +| 5 | `sentence-transformers/sentence-t5-xl` | `sentence-t5-xl` | 通用文本嵌入(GTE)模型:将句子和段落映射到768维的密集向量空间,可以用于聚类或语义搜索等任务。 | +| 6 | `Snowflake/snowflake-arctic-embed-m` | `snowflake-arctic-embed-m` | 通用文本嵌入(GTE)模型,专注于创建针对性能优化的高质量检索模型。 | +| 7 | `embaas/sentence-transformers-e5-large-v2` | `sentence-transformers-e5-large-v2` | 通用文本嵌入(GTE)模型:将句子和段落映射到1024维的密集向量空间,可用于聚类或语义搜索等任务。 | + +这个表格简明地列出了支持的向量化模型及其介绍,帮助用户理解每个模型的特点和应用场景。 + +**一些常用模型汇总: https://public.ukp.informatik.tu-darmstadt.de/reimers/sentence-transformers/v0.2/** + + + +### 支持的距离度量方式: +- `cosine`:余弦相似度 +- `euclid`:欧几里得距离 +- `dot`:点积 +- `manhattan`:曼哈顿距离 + +--- + +## 4. 工作流程 + +1. **配置连接**:组件会尝试连接到本地或远程的 Qdrant 实例。如果没有提供 `host` 和 `port`,则会使用本地嵌入式 Qdrant 数据库。 + +2. **数据加载**:通过 `DATAConnect` 从数据流端口中读取输入数据流(如 PDF 文本或图像数据),并去重处理。 + +3. **数据向量化**:使用 Hugging Face 的 `transformers` 模型将文本或图像转换为向量。模型可配置,默认使用 `all_MiniLM_L6_v2` 模型。 + +4. **数据存储**:向量化的数据批量写入到 Qdrant 中,集合名称通过参数指定。写入完成后,显示上传进度及状态。 + +5. **检索支持**:写入后的数据可以通过 Qdrant 提供的接口进行检索,支持通过向量化搜索进行相似性查询。 + +--- + +## 5. 代码说明 + +### 主程序结构: +```python +if __name__ == "__main__": + # 获取组件配置参数, 使用命令行参数或默认值进行赋值 + collection_name = sys.argv[1] if len(sys.argv) > 1 else DEFAULT_COLLECTION_NAME + batch_size = int(sys.argv[2]) if len(sys.argv) > 2 else DEFAULT_BATCH_SIZE + host = sys.argv[3] if len(sys.argv) > 3 else DEFAULT_HOST + port = int(sys.argv[4]) if len(sys.argv) > 4 else DEFAULT_PORT + grpc_port = int(sys.argv[5]) if len(sys.argv) > 5 else DEFAULT_GRPC_PORT + embed_model = sys.argv[6] if len(sys.argv) > 6 else DEFAULT_EMBED_MODEL + distance_metric = sys.argv[7] if len(sys.argv) > 7 else DEFAULT_DISTANCE_METRIC + + # 初始化 Qdrant 客户端 + if host and port: + client = QdrantClient(host=host, port=port, grpc_port=grpc_port, prefer_grpc=True, headers=DEFAULT_HEADERS) + else: + client = QdrantClient(path="./qdrant_local.db") + + # 数据输入和去重 + dataConnect = DATAConncet() + df = dataConnect.dataInputStream(port="input_read") + df.drop_duplicates(subset=["element_id"], inplace=True) + + # 向量化和写入 + write_dict(collection_name=collection_name, elements_dict=datas, client=client, batch_size=batch_size) + + # 关闭客户端 + client.close() +``` + +### 关键函数: +- **`write_dict`**:负责将数据转换为向量并批量写入 Qdrant。 + +```python +def write_dict(collection_name: str, elements_dict: t.List[t.Dict[str, str]], client: QdrantClient, batch_size: int): + embedFunc = hfe(model_name=embed_model) + + def _embedText(s: str) -> t.List[float]: + return embedFunc.embed_documents(texts=[s])[0] + + points = [] + for i in range(len(elements_dict)): + content = elements_dict[i] + vector = _embedText(str(content['text'])) + points.append(PointStruct(id=i, vector=vector, payload=content)) + + if (i + 1) % batch_size == 0 or i == len(elements_dict) - 1: + try: + client.upsert(collection_name=collection_name, points=points) + points.clear() + except Exception as e: + print(f"Error during upsert: {e}") +``` + +--- + +## 6. 使用示例 + +1)**配置基础镜像**:在基础镜像管理菜单中,设置基础镜像为 `registry.cn-hangzhou.aliyuncs.com/cnic-piflow/embed-base:v1`。配置的具体步骤请参考下图: + +![image-20240916140241146](/home/leishu/.config/Typora/typora-user-images/image-20240916140241146.png) + +2)**安装向量数据库存储组件**:首先,从 [GitHub](https://github.com/cas-bigdatalab/piflow/blob/master/doc/embed/embed.zip) 下载包含向量数据库存储组件的 ZIP 文件。然后,将 ZIP 文件上传到系统并进行挂载(mount)。挂载成功后,选择组件并编辑其基本信息和图标。配置的详细步骤请参考下图: + +![image-20240916140334408](/home/leishu/.config/Typora/typora-user-images/image-20240916140334408.png) + +![image-20240916140658383](/home/leishu/.config/Typora/typora-user-images/image-20240916140658383.png) + +![image-20240916140845907](/home/leishu/.config/Typora/typora-user-images/image-20240916140845907.png) + +![image-20240916141024529](/home/leishu/.config/Typora/typora-user-images/image-20240916141024529.png) + + + + + +--- + +## 7. 注意事项 + +- 运行前请确保 Qdrant 数据库已经启动并正确配置(本地或远程)。 +- `batch_size` 应根据实际数据量设置,建议在大批量数据时适当调整该值以优化性能。 +- 默认情况下,组件会尝试连接本地 Qdrant 实例;如果要连接远程实例,请确保提供正确的 `host` 和 `port`。 +- **禁止将不同预训练模型得到的嵌入存储到同一个数据库中:** qdrant数据库在创建时要求设置向量维度,不同预训练模型获得的嵌入向量维度有所差异.选择了不同的预训练模型时,`collection_name`参数不能一致. +--- + +## 8. 扩展功能 + +- **模型切换**:通过修改 `embed_model` 参数可以选择不同的预训练模型,支持对不同类型的文本和图像进行向量化处理。 +- **距离度量方式**:可以通过修改 `distance_metric` 参数切换不同的距离度量方法,如余弦相似度、欧几里得距离、曼哈顿距离等。 +- **模型扩展:**关于文本嵌入模型还有很多可选择,可根据自身任务需要选择合适的预训练模型.(一些常用模型汇总:https://public.ukp.informatik.tu-darmstadt.de/reimers/sentence-transformers/v0.2/) +--- + +## 9. 结语 + +通过以上步骤,已经成功配置了所需的基础镜像,并将向量数据库存储组件集成到系统中。这些设置为处理和存储来自不同解析组件的非结构化数据提供了强大的支持,确保了数据在 Qdrant 向量数据库中的高效存储与检索。 + +在进行后续操作时,可以利用此组件来优化大模型训练的数据需求,提升数据检索与分析的效率。Qdrant 的向量化处理和存储能力将更好地管理和利用非结构化数据,为数据驱动的决策提供坚实的基础。 diff --git a/python/embed/qdrant/README.pdf b/python/embed/qdrant/README.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a1a435e3a344152a8ad7d1a851d096bb32de9cef GIT binary patch literal 1152875 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 zП)f;gc4014K3cK9P+%^9V5^E#Xw5lF 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

AuMfM#6bN*Ans4|~ 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

yoLjC)e00al`>l=iS*AYTQK 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%0DbgG$Ck&|I*;8r47#Flf% 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 z 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