diff --git a/cmd/v2/FyneApp.toml b/cmd/v2/FyneApp.toml index 3b502ba60..0e8f9b054 100644 --- a/cmd/v2/FyneApp.toml +++ b/cmd/v2/FyneApp.toml @@ -4,5 +4,5 @@ Website = "http://legu.cc" Icon = "app.png" Name = "RobotGUI" ID = "cc.legu.app" - Version = "1.2.9" - Build = 39 + Version = "1.2.10" + Build = 40 diff --git a/cmd/v2/lib/common/lang.go b/cmd/v2/lib/common/lang.go index 7751e24e1..e4b00af73 100644 --- a/cmd/v2/lib/common/lang.go +++ b/cmd/v2/lib/common/lang.go @@ -98,6 +98,7 @@ const ( TOOLBAR_AUTO = "自动化" TOOLBAR_PING = "端口扫描" TOOLBAR_MGODB = "MongoDB" + TOOLBAR_VALID = "配置校验" TOOLBAR_PERF_TIP = "开始" TOOLBAR_PERF_CONF = "配置" diff --git a/cmd/v2/lib/storage/config.go b/cmd/v2/lib/storage/config.go index b36b86507..e52e626ee 100644 --- a/cmd/v2/lib/storage/config.go +++ b/cmd/v2/lib/storage/config.go @@ -2,7 +2,7 @@ package storage import "go_dreamfactory/pb" -//默认配置 +// 默认配置 func NewDefaultConfig() *Config { return &Config{ Pressure: PressureConfig{ @@ -40,6 +40,7 @@ type Config struct { Servers []*ServerConfig `json:"servers,omitempty"` //区服配置 MgoDB *MgoDB `json:"mgoDB,omitempty"` //MongoDB配置 ServiceDBInfo *pb.ServiceDBInfo `json:"serviceDBInfo,omitempty"` // + JsonDir string `json:"jsonDir,omitempty"` //json配置目录 } type MgoDB struct { @@ -51,14 +52,14 @@ type MgoDB struct { Database string `json:"database,omitempty"` } -//压测配置 +// 压测配置 type PressureConfig struct { TimeoutMs int32 `json:"timeout,omitempty"` //超时时间 毫秒 Concurrency int32 `json:"concurrency,omitempty"` //并发量 DurationS int32 `json:"duration,omitempty"` //持续时间 秒 } -//luban +// luban type LubanConfig struct { ServerAddr string ProjectDir string diff --git a/cmd/v2/main.go b/cmd/v2/main.go index 7bf4c815c..34c049270 100644 --- a/cmd/v2/main.go +++ b/cmd/v2/main.go @@ -33,7 +33,6 @@ var ( logger *logrus.Logger ) -// func init() { _ = os.Setenv("FYNE_SCALE", "0.9") var err error @@ -162,7 +161,6 @@ func setupLogger() (err error) { // check version func checkVersion(app fyne.App, parent fyne.Window) { - logrus.Debug("check version") b, err := connService.HttpConnect("http://10.0.0.9:8080/" + "version") if err != nil { dialog.ShowError(errors.New("版本检查:"+err.Error()), parent) diff --git a/cmd/v2/theme/icon.go b/cmd/v2/theme/icon.go index b21c57a52..e2c88e3dc 100644 --- a/cmd/v2/theme/icon.go +++ b/cmd/v2/theme/icon.go @@ -18,3 +18,16 @@ var ResourceAppPng = &fyne.StaticResource{ StaticContent: []byte( "\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x000\x00\x00\x000\b\x06\x00\x00\x00W\x02\xf9\x87\x00\x00\x00\tpHYs\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\x95+\x0e\x1b\x00\x00\x15\xdfIDATh\x81\x95\x9ay\x94\\\xd5}\xe7?\xf7\xbe\xf7j\xaf\xea\xaa\xea}W\xabi\xedha\x11H,\x02,6\xb3\x18\x821\xb6\x99\xc4\xf1d\x1b\xcf؞\xe1@2!\xfe#\xe4\xccI\xe2$\xf6x2\xc1NNb\a\x88\xf1\xb1s\x8c\xc1\x18\x10\x10@\b$\x83vh-\xb4ZK\uf6fa\xaa\xbb\xba\xf6\xe5\xbdw\xef\xfcQխ\x960\xc7\xe3{\xce\xeb~[\xbd\xf7[\xbe\xbf\xfd\x89\x89\xa9\t-\x84\x00@\b\xc1\xa5\xfbˏ/\xbd\a\xe0ĉ#\xfc\xc3\xdf\xff\x1f\x1e\xf8\xec\x83\xdcq\xe7}\f\x0f\x9f\xe6\xe5\x97^\xe0\xf3_\xf8m\x1a\x1b\xdb)\x95\xf2|\xe7\u007f\xff5Cg\x87\xf8淾CCC\xf3\xd2o\xd1\xfcʥѠA\xeb\v7,\xee_zN.\x12$\xa5d\xf9\xfe\xf2\xe3K\xef\xd1\xda]:w\xe8\xe0~\x86\x87\xc6\xf8\xee\x93\xdfe.9\xcb\xd3O\xfd\v/\xbe\xf02\xdf{\xf2\xff\x92HL\xf1\xcdo\xfe\x05/\xbd\xf8\x1a'O\x9e\xe6\xc8\xc1\xfd\x80\xa6R\xca\xe38\x15\x84\x14 \xf8ض\xf4NY\xdb\xc4'o楒\x96R.qx\xe95\x80w\xf6\xbc\xc6\x0f\x9f~\x8a{\xef\u007f\x80\xfb\xee\xff\x9f\xe1\xfb\xdf\u007f\x8amۯ\xe6ϟ\xf8\x16Bꋤ\xba\\\v\x82\xda{\x05\b-~\xe5}\xe6\xa5\x1c}\x12\xe1\xd5}͞=\xbb)\x15*\xfc\xf0\x99\u007fô\f\xf6\xbe\xbb\xafv\xaf\xc1йq@W\x85 \x05\x862Q\xa2R\x13-<\xff\xb3\x17\x97T\xbfj\xf5\xba%i\xff\xaa%\x84\x00\xadы\xb0Y\xd4\xcc%\x8c\xc8_G\xfc\xc5\x102\xe8\xeb[\x8d\xd2\xe0\xf5zy\xfa\xa9\xa7\x99K$\x91\xc8e*7\x10\x02\x84\xd0\xf8\xbc\x16\xc1\x80\x1fC\n\xa4\x10\xa0%h\x81a\x1a45֓\x98\x9d@\xf0q\xa8\nQ\x93}\xf5AUZ\x84@\xb2\fV\x8b\xdb\xf9\xc4y\xfdIZ\xa8JN#e\xf5\x01\x99\xf4<\xdfx\xfc\x8f9?\x9d\xa0X*\xe386\xcaU\b\xa1\x10Z`(\x9b\x80ph\xf2j\xa2>\x89ǐ\x94\x1cE\"g3ST䵁\xab\f\x14\xa0\xd0\xc4\xeb\xeb\xf8\xe9\xcf~N(\x1c\x05@i\x8dr\x8ad\xd3\vH!\xf0\xfa\xfcX^\x1fBzaѰ\x17\x01V\xd3\xc2'B\b\x04\xe3\xe3C\xfc\xe0_\xff\x11W\xd9xL/\xa3C#\xe4\ve2\xd9\x1cO\xf1\xfa\xb4\xcd@NRT&\x9b6m\xc4\xe7\v,\xc1%\x95\x1cg\xcfKO\xd3\xd1ԄUZ\xc0u\\l\xc7eA\x1b(O\x18]\xd2\xec\xb8\xeb\xb3\x04c\xad,\"\xefcF\xbc\xfc\xf8С\xf7H\x15\xe6\xf0\xfb=\x14\xd3y\x9c\x8a\x8b\xb2]\x84v\x90(\x9a\xad\x02\x0f]\x1e\xe1\xa6M\xed\xf8#\xaa\xe6E\\\x04n\x15\xabH\x84Ob\xba&\x9dm\xf5\xc4\xdd\"M\xbe\nό9\xfc\xde_~\x8b\xab\xaeށ\x94&\x88\xaad\x8f\xbe\xbf\x8b{\xbf\xf8%\xfc\xb9\x14T\x16@W5\xe5\x16\xf3\x9c<\xb0\x97\u007f{\xf65~\xf9\u008f\xf9\xccW\x1f\xe5ڛ~\v->\x89\x01Yݿ\xf3\xd3\xf71t\xee\x1cÓC8\x05\a\xad$\xb6c\xe3W%\xee\xe9\xf3\xf0Ў\x15\x84B\x06\xbaj\xb3hYu\x19\u0095\xe4s\x0eS\x89\x1c3s.\v)\x17\xdbQ\x18\xf92\x01C\x1035\xab.[\x854\xcc%cT\xca\xc6gJ|\x1e\x1f\xa8\x12\xc8*j\x84\x02\xc34\xf1\x9ap[\x9b\x85t\x8b\xbc\xf6\xb7O\x90N$\xb9\xeds\u007ft\x81\x01`\xc9\xe7\x02\xe4ri\x16\xe6\xe7ظi3\xa7N\x0f\xa0]\x81\xa1\x1cZ\xad<_{`%\x1b\xda\x05¬\x80p\x10\xc2\x02m13U\xe2\xf8\xd9\x14\x89\x92\x17\u007f\xbc\x95\xf6\x8eut\xf66\xb2*\xe2\xc5u+d\x92)F\x86ƈ\xb7\v\xea\xe2-\x17<\x90\x86l:I\xac\xa1\x010\x91\u0083\xc6\x01\\А??\xc1\xe0\x87\x83켩\x1d1\x9e\xa5%\xb0\xc0\x8f\x9f\xfe\x1e\xa1\xa6\xa6e\f,\xb9)x\xe9\xe5\xe7\xf8\xc5/\x9eG\x18\xe0\xf1x\b\x05\x82dg\xe6\xe8\f\x14\xf9\xe3\xdf\xd9I4?\x88\x14\n\xf0P*W8zr\x81\x89\xacA˚M\\\xf3Е4\xb56#L\x0f\v\xe9,c\xa3c$\x92YLU\xa1\xbb\xb5\x99\x80\a|\xa2\x1bix\x96\xfbL\xe6\x12\x93\xd4\xc5\x1a\x90\x02\xf0\x86\x10\x85<\xaek3}\xec\b\xa7O\x9d\xa53\\\xc4\x1b\t\xc2\xea\x18=\xae\xe6\x9a\xec\x1co>\xfb\x83*\x03\x17\f\x17\xb4P\xbc\xfe\xea.<\x01\x83P,\f\xb6f\xe6\xec$\xeb\x1a\x14\x8f~\xed\xf3\x04\xcc\"\xceٓ\x94\xf3\x92}\xfdsd\xac&\xae\xfe\xd4]\xecX\xbb\xba\xeaBѠ\r\xc6\x06?\xe2\xf0\xb1\x13DB!,Ӣ$M\\m\xe0\x0f\x87I\x8d\xcd \x97\x11\xbf\xe8\xd5\x05\x1a-\x04\"\x14\aSr`\xd7s\x1cڳ\x97\x0eY\xe4\xba\xebZ\x10F\x05\x84\xc2\xd7\x1bgc\xbaHR\xfa0\xfe\xf4\xf1?}\xe2\xe2pm\xb0\xfd\xba\xedLOLr\xb2\xff\x14\xa1\xb0\x87n\xab\xc8\xe3\x8f\x9a\x9bڸ|\xcb\r\b\xc3ba!\x81\xcf\x17\xc0\xe7\xf5\xf0\xfcw\xbeƙ\xd3#|\xe5\xaf\xfe\x95\xfa\xb8\x9fw~\xf2\xcf\xf4t4\x12\xb1\x1c\xc6\xce\rq|\xe4<7>\xf89V\xb4t\x81]\xc0-\x15INM0x\xee$7\xde|7\xd20\xaa\xd8\x06\xb4r\x198\xf4\x1e~Kq\xec\xf8\x19F\xcb\x06_~\xec\xdb\xf8\x02\x91\x8f\xe5CU\xa3\\L\xa3\x05\xda-\xf1\xcaS\u007f\xc9j\u007f\x91εk\t4ub\xbe\xbb\xfbg\x14\x8bE\xae\xbf\xfe6\x12\xb3\x93\xecz\xe1_\xb8\xed3_&\x16o\xaaEH\xc1u\x9f{\x8cЁ\xddd\xf2Y\xea\xeb#\xdc|\xdb-\x942\xb3\x8c\x9d8A\xaehs痿J\xba\x92\xc0\x11\x9a\xf1\xa3\xefQ\\\x98cxd\x14o\xac\x19a\xd6\xf2\x19-(\x962\x1cy\xfbm\xa2\xe1\x10\xd1\xfa8\xf1x\x88`\xd7v\xfc\x81\xba\xc5|\xef\xa2D\xcduʜ\xfe\xf0=\xa6\xce\x1eö\xf3h\xb7\xc2ș3\x04\x9a|\xb4\xf69\b)1\xeb\xe3\xcdlڲ\x03\x84\"\x1a\xab\xa7\xa9\xa5\x997^~\x8a;?\xf3\x87\x18\x96\a!\xa1m\xc5jںW\xf2\xfa/\x9e\xa1g\xc5\xc3\b\u007f=d\x12\xf4]\xb9\x9d>\x01\xd2\xe7\xa3R\t\xf1\x1f\xbb\x9eG\xce\xceP\xaa@\xdf\xc6m\xac\u07fc\x05)\x05\xae\xe32\xf0a?\xd3\xe3gغ\xedF\xc2\xe1\b\xc5\xd4$Z\x800\x8c%\xe2\x17ᬵfl\xf8\x04\a_y\x86\xab֬b\xe7\xb6MH\x8f\t\xdaA\u07fc\x9d\xa9\xb1q\x1c\xa7\xea\xfa\xcd\xcd[\xaeG\xab\fP\x02$\xd1P\x80m۶\xf1\xd6\xeb\xcfp\xfb\xdd\u007f\xb0\x18&9zx\x0f#C\xa7Иh\u007f\f\u007f\xac\rT\x19\xd0H\x95\xa7\xb3>J\xe3λ1\x9c\x12\x96i\x01\n\xe5\nΞ8\xce\xc8\xe9\x01zV\xaf\xe1Sw=\x880%\xc5l\x06\xad\x15łMc\xb4\xf1c\xa89;p\x88\xb3o\xff\x88\xfbn݁/܈\x10\x02%\x14\x02\x03ay\xe9X\xd9G69\x85t,L\xa5\xe60JyD!\r\x86\x84P\x9c\xfa\xd6.\xe4\xc1\xbd\x14\x8a\v\x04\x021N\u007ft\x80\xec\a\xaf\xd3\x134\xd0\xcaE\b\x03\u00adP\xc9\"\x9c\"Z9\b\xd7\xc6'5\xda\xe3!\x97^\xe0\xdc\xc9~\xd2\xc9\x05\xba{Wp\xcb=\xf7!\r/h\x89BQ\xa9\x941\\M2\x9dcc\xe7\n\x8a\xe5\x02\xd9R\x06\x9f/\xc8B&ə\xbd\xcfq\xeb\xf5W\xe1\xf3\xd7!$\x80\xaa\xc6\x17\x04\x1a\x01RQ\xb25Nb\x02S\x16\xe7\x11\xd9y\xd0\x1a\xe9\x02\v\x15\xa8o\xc5q\xc1k\xf9\x10B0>|\x82\xde\xf6\x16\xceͤ\xb0]\x1bӬ>\xd2\x11\x1e\xf2\x95\"\xe9\xe4\x02\xf33Ӕ\xd3\tL\xb7B$\x14\xa4o\xcdF\x02\x81\b\xc9T\n\x1c\x816\x04#\x13\x93\xf4t\xb6\x13\xf2\x19\xa4REr\xb6A0R\xc7\xd7\xff\xe6\x11\x92=&\x81\xba\x10\xfe\xc11\xfe\xee\xfa\x1b1\xa4D(\xc5bR$j\x9eM\xd4\xea\x8aP]\x84\x89ӧ0\x9d\xc93$&\x86\xd0\xfe\x10-\xedmx\xfca\xce\x1d\xd9CO\xdf\x15\x18V\x00\x00\xcb\xf0\xa3d\x89\xa1\xe1Q6-\xcc\xe3\x8f\a\xe8\u007f\xe3Gx\xa5\x0f\xad!\x18\f\xd1\xd7\xda@xm\x0f\xd20\x11\x15\x17!\xaaUT<\x1c\xa0\x94\x9eG\x06Ctv\xb5\xa0Q\xe0\x94\x99\x9d\x99#\x95H\xf0\xea\x93\u007f\xc2\x1df\x99g\xc6\x1d귮ek\xa6L\xd0\xeb\a\x04\x8eS\xc2\xc4Ǣ\x91\b\tZU\xeb\x1c\xa5\x1c\\\xd7Ÿ\xa5n\xf6\x893#\xe7\xd9\u007f\xe08٩Q\x06O\f0]0\xb9\xfe\xce\xff\xb4\x14\xdc\x1a[:y\xe3\xad\xd7(j\x81\x16\x06+W]N[S\x1d---4u\xb4c\xfa\x03\x04\x82aL\x8f\xc9\xd8\xe8\x04u\xa1 HM)\x97f\xff\xfb\xefq\xe0\x83\x0fi_\xd9C8\x14©\x94\x99\x1a\x19b\xcf{G\xe9i\x89\x13\x16\x0e^C\x92(\x96\xc8w5\xb0:\x95e}C\a\xc2\x10\xe0T(\xe4\xb2xCu5\v_Ԁfbd\x8c\x88\xcfļf\x93\x97d\"ORǰ\xbd\x1el_\x9c\x9d\xf7\u007f\x99\xa5\x8a\x01\bD\xe2\xfc\xf6\u007f\xff\x1b\x94S\xe6\xfb\xff\xf0\xe7\xdcp\xd3\x1d\xf8\u00ad\x90\x99\x02\xd7&\x14\n\xd6\x12BM{{\v\x99\xf1\x11f\xceO395C\xd0g\xf0\xc0\xe7\xee\xc7\xf0E\xaa>\xbdRfl|\x92\x81\xe1\x19:\xaf\xbb\x82\xed\xb7\xec\xc0\x92&\xb9\xf7\xdf\xe6ٙ$\v\x15\xa7jgH4\x9a\xe4\xf80\x81X3\x86e-3s\xc1\xf4\xd0(W_\xbd\x1eSH\xcd̂\xe2\xc1\xc7\xfe\x0e\x8f7\x84/\x10FJ\xab\x8a\xbb\xc5Do1Z\x9b^\xee\xba\xffw\xf9\xe9\x0f\xff\x89/\xfc\xe7\xafcFL\x12\xa3\xe7h\x8ezp*Er\x85\x12\xb1H\x88\xba\x95}\xe8\xfa\x16\x9az2D⍔]\x85\xaaؘ\x96\xc9\xc4\xd9A\x8e\xf6\x9f\xe3\xeb_\xfb\x03\xba{V\x02\x1a\xb7\x90gMo/\xf6\xc4G̖+(\xed \xa9\x12\x1c\x89Ƙ\x19\x1f\xa3c\xe5\xaaZ\xbfH\xb0\x90\x98\xc5PE\xa4i!K\xb92\xe9J\x94H\xac\x15\u007f0V\xab\x90t\x15u˺\x18B\x83\xabl\xe2\xed+\xd8t\xd5V\xbe\xf7\xedo0\xbfP$\xb6b\x15*چ\x11n \x14\x89\xa2\x84\x00$\xc1P\x98hs\x1b\xa6\xc7\xc2\xe7\xf7\xe2\xf5x9\xb2\xff]v\xef=\xcc\xef\u007f\xf5\xf7\xe9\xee\xed\x05\xbb\x84\x93\x9a&1r\x84\x85\xe48ҔL\t(\xabR\r\xf5\x9a`(Dz>Q\xa3BR)\x95x\xe7\xcd7ٸi\x03Ұ0\x0f\r\xe4\xc9\xf5\xee@\b\x03\x8dC\xe2\xfc\x18\x13C\xa7(\xe52\ba\x12\x8b7ѵz\x03/\x1e\u007f\x9b\xdd\xf3Gh\x9b1\xb9\xb7w\x15\xb7nYˮg\xbf\x83\x15oe\xed\x96-\xb44\xb6\xd1\xd4\xd4\xce\xd8\xf0(]\xad\x8d,\xcc\xce\x12\x0eyp\xed\fg\xfb\xfby\xeb\xed\x03X\x06|\xe5\xbf\xfd!\x96LJ[ʡr\xf38\xae\x83v\x04\x93\xe9<\xc1\x15Q\x92\xb6\xc3|&G\xc8\x1fE\b0\xa4\xc4)W\xd0(R\x89\x19^\xfb\xd9/\xb8n\xdbF,\xcbBx\xbc\x98\xa2g+\xd7\xdd\xf3EΞ>ʇ\aw\xd3\xd1\xd5Ǫ\xcb:\xa93\x9aP\x99$\xc9\xe4\b\x87w\xed嗳C\xb4\xdf\u007f\x15b\xdf<\xb1\xfafZ\x83\x06\x95b\x81\xfe\x13\xa7\xf8\x8f\xe3\x1f\xe0\x0fX\xf8\xfd~<\xfe0\x8eR\xe4\xf3y\xb4S\xc4c\x97\x88\x05|DM\x87\a\xbe\xf4;X\x1e?\xaa\x9cC\xe5S\x80FUʸ\xaebob\x8e\xf8\x8dk(\x84\xfd\xec\xf9h\x82\x87\x1b[1\xa5\x89\xeb\xba$\xd3\x19\xdeܵ\x8b\xb1\xc1\xd3\xec\xb8n3\xcd\xcd\xcd`H\x84LJ\xb9u\xe3:~\xf0\x8f\u007f͆\x9bo灇\x1f\xc14LP\xf3\x18\xc54Z:\xac\x88F\xe8\xe9\xebesq3\u007fvl\x0fy\xe1дj+u\xba\xc0\x15\xad\xbd\\\xb1SU\x13-lT\xb9\x88\x93O\x93\x9e\x9d`\xec\xdc9&&&)\x164=\x1d\r\x04\"\xf5Dc\xf5h\xb7\x82\x9bOWݩR\x14\xb2)^\x9c\x1c\xe7D\xa3\x97\r^\x0f\x91\xe6z\xde\xde?\xc8}\xc5\x1c\x91`\x1d\xc5b\x81\x93\x1f\x1cgMO+;\xb7\xae\xa3\xb9\xbb\x1d)\x05\x86/\x88Fc|\xe5\xe1;\x9e\x88]v\r7\xec\xb8\x1f!A\xb89\x84*#\nI\xd0v\xb5烉\xdf\xf412:\x8e\xb3\xbe\x9e\x91\xa3Cl]s\r\xc2\xc9W\xaf\xd7\x1aZ\xd2\xf2b\x06#\x84\x1a;h[\xb9\x8a\xbe\xcbV\xd2\xd5\xd2\xc0\x99s\xe3\xac\\w9\xe1h\fU\x98G\xd96(\x97\x91\xf9\xf3\xfc\xfd\x81\xa3\xfc\xb4\x94\xa4\xdci\x82\x84X(J\xd6\xd0X\x13\t.k\x8e3tn\n\x9ftY\xd9\xdeD[\xdf*\fi\x80!\xb1B\x8d \x05\xa6U\x17\xe3ʍ\xb7\xa0U\x01\xa1\xf2\b'\x83\xccσS\xa9\xf6&\xb5\x89\xaa\xe5[\xb7^\xb6\x81\xef\x16\xcf\xf0V\xf18ۆNqM\xcfjt%\x85\xc0\xaeZ\xf9\xa2\xe1\v\x10^?fC\x17\xd1H\x13\xb7v\xf4b\x98\x16\xda.\xe1\x94\v\f\xe7R\xfct\xff\x87\xbc\x92\x9a\xa4\xd8\x17\xc1\b\x84\xd0B365\x82\xc7㥥\xaf\x8b\x9f\xf7\xef冮6\x06O\x0f\xd3\x1c4hh\xef\xc40L\xb4И\xc1\x18\x98\xd5^\x8c\xc8\x0f>\xaf]\u007f\f\u007f \x02v\ti\xdb\b\xe1\xd6\xe2\x80 =9B]G7\xa0p\xb5ˣ\xfb_\xc6ؾ\x92\x81W\x8f\xf3?\xaf\xfd]nX}%\xb2\x92\x06U@\xe0.\xe5\xef\x8b]=\rh\xa1I\xcdO\xb3\xaf\xff=^\x1a8N\xbf\xcac\xac\x8aaDo\x10\xb2\xfc\x18\xcbʿ\x8avQ\x8e\x83\xd4b\x89\xf8E\xa9^\x10\xf1\x85\xffBH\x84\xd7\x02\x8f\x89^V\x91\x19%p\as\\q\xf3\xb5\x04\xa2A<>/\xfa\xa6\r\x16\xdc\f\xa9d\x1aW+J\xb9B\x15ZEȦSl\xdep%^\xd3Kq.\xcd\xfa𦚮5&\xb5\xf9\x93F\"\xa4\xc2\fE\xa9\v\x84\x11\xe52\xba\\\xc1U\xe5\xaa\aQ\n\xff\xaa\x10\xe5\x8ab\xe1|\x8a\xdd{N\x11\xac\x8f\xe0\vz(*\x9b\x804\tX~\xf2\xe5ڋ\x17Gtbٰn\x99v\xfc\x1dq\xe8\xd4\b\xc7E\xe5+\xb8\x8es\xb1v\x16Q\xa65J+P\xa0]\x8d9\x98\xe6S\xbf\xb5c)p\x9aj~\x0e#Z\x0f\x86q\xe1\xe7\xd2@\xf8C\x88@\xb5\xac\xc0\xd1h\xc7ƴ\xf3\xac\xdf\xec%\x9c\x18\xe7\xcd\xe9I\xf2\xb3\x19&f\x93\xd8\xdaE\x06\xbd\x18\x96\x85\xa5]\n\x85\x02\x15\xe5`D,\xbc\xcda.e\xe1\x02\xbc\x04H\x03i\b\xf4\x85a&Z\xab\xaa=\xd5l$\x18\x8a\xe05-R\x1f\x8d\xf3\xbfn\xf9#|\xa6\xaf\x16\xf15\xe6\xeb\xef\xbc\xc7\rWm P׀\fx\x91\xa6\a\xa4\x01R]\xe8ט L\v\xe1\xaf'\xe0\v\xd1j\b\xe4\xec\x04\xbd\xd7\xf4\x12ʴ2\x97\xcb3\x9dI\x92\xceT\xa5o\xd6\x051\xfdV\xade\xaf\x97\xbb\xfaKd\\\x9b\xfbI\x03!\xd4\x05#W\x8b\x00\xa9\xfe\x89\xc7\x1aPe\x87J\xff,]\xb7w]\xf4\x1cs˃\x8f\xb0\xe7\xad\xe7\xf0\x14\x06\xd8\xd8\xd3M\xac1\x8eiXT˒\xaa\xe4l@\xfb\x02(\xad\t\xd6Ő\xe1(\xe9\xf9\x1cJ\t\n\xe5\n\x15\x1cʆƌ\xfa>N\xa9\xfe5\xc6|\xc98\x17@9.\x8bnJ\bA8\x18\xa6X*\x11omD\xd6J\xcd%\x06\x1a[V\xf0\xe9/>F>;G\xff\xd1=\xa4\x0e\x1fG\x962\xf8,A\xd8\xefG\x02\xe9\\\x81\xb3\xe3\xd3tuwq\xf7}wa\xfa\xfc\xa4R\x19\x12\vY\xca\xca!\xeb\x94.\xb8\xd0%\xd1\xfd\xff/\xad\xd5\x05\x8dh\rJ]D\xa4%M2\xe9$]\x91Ѕ\xb3\x8b6P\x1d\"\v\x02\x91z\xb6\xdf\xfcY\xb8\xf9\x01\x94m\x93˦ȧ\xe7\xc9\x16\xd2D\x84\xc9\xc6\xfa&\x86\a\x8e0\xd0\u007f\x82\x96\xb5=\x94\x94\xcb\xd8\xe44\xc1\xa6\x18%\xc7^F\xcdoF<\xd5xy\xf1\x92\x12\xdc\xdae\xa5Ѯ\x8b\xe5\xb5H\xe6Ӹ\xda\xc1\x10\x17\xec\xd5\xe4cK -\x0fu\xf5-\xd4շ\\8+\x04\x9eX\x8c\xff\xfa\xe8\xc3\xdcr\xae\x8f\xa2\xd4\xcc\xcd\xce\x13l\xaav\x1b\xc4oJ\xf8\xf27^\xf2E\x804\r\xb0Y\x1a}e\x8ay\xdaZZ\x98\x1c=\xcd\xf0\xcc0\x97\xb5\xf5^\xe0\xf57yQ23\x8f\xeanaO*\x83\x8c\xfb\xc9gKKS\xfa_\a\xf5O$\x1e@\\\xfc\xbd\x84a\x18\xb5Μ\x06\xadI\xa6Σ54o\xe8\xe6\xd9}\xcf_\xfc\xa9\x01|\xf2\xa7,\x17\x0e\xaa\xd4U\xec\n\xc7&\x879*g\xd1\x1e\x03\xdb.\xe3\x15&~\xc3\xf3\x1b#g\xd1\x0fi\x00\xaf\x896\xaaƹ\xf8^\xcb\xe3A\xbb\n\xedj\xd2\xe9\x05R\xd9\x05\x8c\x80\x8f\x01o\x82w\x8e\xbd\xbb\xf4\x94\xff\a\xf7\x1e\t\x1d\xa3\xb5\x99:\x00\x00\x00\x00IEND\xaeB`\x82"), } +// auto-generated +// Code generated by '$ fyne bundle'. DO NOT EDIT. + +var ResourceMongodbJpg = &fyne.StaticResource{ + StaticName: "mongodb.jpg", + StaticContent: []byte( + "\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00`\x00`\x00\x00\xff\xdb\x00C\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\b\x05\x05\x04\x04\x05\n\a\a\x06\b\f\n\f\f\v\n\v\v\r\x0e\x12\x10\r\x0e\x11\x0e\v\v\x10\x16\x10\x11\x13\x14\x15\x15\x15\f\x0f\x17\x18\x16\x14\x18\x12\x14\x15\x14\xff\xdb\x00C\x01\x03\x04\x04\x05\x04\x05\t\x05\x05\t\x14\r\v\r\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\xff\xc0\x00\x11\b\x00q\x00p\x03\x01\"\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1f\x00\x00\x01\x05\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\a\b\t\n\v\xff\xc4\x00\xb5\x10\x00\x02\x01\x03\x03\x02\x04\x03\x05\x05\x04\x04\x00\x00\x01}\x01\x02\x03\x00\x04\x11\x05\x12!1A\x06\x13Qa\a\"q\x142\x81\x91\xa1\b#B\xb1\xc1\x15R\xd1\xf0$3br\x82\t\n\x16\x17\x18\x19\x1a%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\x83\x84\x85\x86\x87\x88\x89\x8a\x92\x93\x94\x95\x96\x97\x98\x99\x9a\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xff\xc4\x00\x1f\x01\x00\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\a\b\t\n\v\xff\xc4\x00\xb5\x11\x00\x02\x01\x02\x04\x04\x03\x04\a\x05\x04\x04\x00\x01\x02w\x00\x01\x02\x03\x11\x04\x05!1\x06\x12AQ\aaq\x13\"2\x81\b\x14B\x91\xa1\xb1\xc1\t#3R\xf0\x15br\xd1\n\x16$4\xe1%\xf1\x17\x18\x19\x1a&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x92\x93\x94\x95\x96\x97\x98\x99\x9a\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xff\xda\x00\f\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xfd\x05\xa2\x9c\xadڱ|U\xe2\xad;\xc1\xf6Kqz\xd2K,\x99\x10\xdaC\x8d\xf2\xe0s\xc9\xe0\x0fs\xf8\x02k:\x95#J<\xf2vDJ\xa2\xa6\xb9\xa4써\xfef\n\x14\x96=0\t\xcf\xe5TuO\x10\xe9z\x1e\x7f\xb45\x1b[f\x1f\xc1$\xc0\xb8\xff\x00\x80\x8c\x9fҼS\xc4_\x135\xbf\x111\x89.\x0e\x9fjx\xfb=\x91+\x90z\x02\xdf}\xff\x00\x1fӥy߉\xbci\xa0x-wk\xda柣\xbbr\"\xba\xb8\xfd\xf4\x9fH\xd7/\xff\x00\x8e\xfe5\xf3\x15\xb3\xd5w\f49\x8f\x1a\xa6e\xcd.\\\r\x99\xa3\xfe\x16\xb8\xd5\x02\x93\xf8,g\xf9\xd7#\xc6fU\xb5\x86\x82K2\xad\xf0\xc2\xc7\xdb\xef\xf1\xc1\xf7|\x9a\n\xe3\xfd\xab\xa6'\xff\x00A\xa1~8>\xef\x9bA\\\x7f\xb3t\xc3\xff\x00e\xaf\x83\x9b\xf6\xd4\xd4w|\xbe\x0eӀ\xff\x00\xa6\x97\xb31\xfc\xc0\x14\xdf\xf8mMG\x1c\xf8?M\xeb\xfc\x17\xb3\x03\xfc\x8d%W4\xef\xf9\x0f\xea\xf9\xa7\xf5c\xef\xb8\xfe8[3\x01.\x87*\x8f\xf6n\x81?\x91JԴ\xf8\xc1\xa0L\xc0M\x05\xed\xa1\xff\x00j!\"\xfdr\xa7?\xa5~\x7fZ\xfe\xdaP\xb4\x8a.\xbc\x1a\xc5;\x9bmP\x8fѣ\xae\xa7H\xfd\xae\xbc\x15|ؽ\xb2\xd64\xa3\xfd\xe3\x02N\x83\xeaQ\xb3\xff\x00\x8e\xd3\xfa\xe6iOV\xaf\xf7\x12\xe3\x9aSג\xff\x00q\xf7ޛ\xe3\r\x0fY`\xb6z\xa5\xbbK\xd3\xcbi69\xf6\n\xc0V\xb6\xd6^\xbf^k\xe3O\v\xfcM\xf0\x8f\x8d\xa4\x03G\xf1\x1e\x9f}9\x1c[\xf9\xa6)\xb3\xe9\xe5\xb8RO\xb0\xfc\xeb\xd24\x1f\x1dk\xde\x19\"8n\xe6hT\xe0\xdb]\r\xc8}\xb0NS\xfe\x03]Ts\xc7\x17\xcb^\x16\x1cs)\xc1\xf2ׅ\x8f\xa0\xa8\xaeo\xc1\xbf\x10,\xfc^|\xa4Sm|\xab\xb9\xedX\xe5H\xf5V\xea{\xf5\xe6\xbaV99\xe4\xfb\x93\x9a\xfaj5\xe9\u05cf5-\x8ff\x9dHՏ4D\\\xee\n\x17$\xf0\x0f\xa7 \x7fZ\xf0O\x88\x9a\xc1\xd7|i|\xc8\xc4\xc7o'\xd9 _E\\\xe4}\vu\xfc+\xdf\x16C\n\xc9'\xf0č!\xfc\x015\xf2\xcd֤,\xe1\xbd\xd4\xe5m\x8b\f2\xde9\xf4UF\x7f\xe8+\xe73\xe9\xda\x14\xe8\xf7<\x8c\xd2w\xe4\xa7mϕ~;\xfeў\"_\x14j\xde\x19\xf0\xd5\xd8\xd14\x9b\x19^\xd2[\xdbV+ur\xe9\xf2əO\xdd]\xd9P\x17\x1fw\xad|\xf7$\xefu+\xcb#\xb4\xb29\xcbH\xe4\xeec\xeas\xce~\xa4\xd1%Է\xd25\xcc\xc7t\xd3\x13#\xb7\xab7,\x7f2i\xb5xz\x10\xa3M[s\xea0\xb8zT)\xc5S\x8e\xe1J\xa7\x18\xea?\x91\xf6\xa4\xad_\t\xf8^\xff\x00ƾ%\xb1\xd0\xf4ы\xab\xa6ǚWr\u0083\x96\x91\xbd\x94\x7f\x0f\xf1\x12\xa2\xb7n1W\x91\xd7)F\x11r\x97C_\xe1w\xc3=_ⷉWL\xd3\"6\xf6p:\x1dGQ`Dv\xd1\xee\xc9\x00\xff\x00\x14\x85Aڿ\x8fj\x9f\xe2\xe7\x81\xdb\xc0>7\xd4-\"\x86H\xf4\xa9'\x91\xacdl\x01\xe5\x06#a?\xdeP0}z\xf7\xaf\xb5>\x1e\xf8SK\xf0/\x87\xac\xb4}&-\x96\xb0\xf2do\xf5\x939\xfb\xd29\xee\xe4\xf5\xfc\xbbW\x9c\xfcB\xf0Տ\x8b\xe5\xd5,5\x04\x1eS\\HRle\xa1}\xc7\x0e>\x95\xe4}y\xb9\xddl|k\xce\xe5\xf5\x8b\xcb\xe1\xd8\xf8\xfb\xbf]\xc7\xd79\xcd\x15\xa9\xe2_\x0f^x[Z\xb9\xd3o\x90\xacз\x0eF\x04\x8b\xd9DZ\xff\x00\x1a˯^/\x99\\\xfb\x1as\xf6\x91S\x88\x8d\xb4\x90\x0fQ\xc8\xf5\xfc+\xd5~\x19~\xd1\xde%\xf0\x1dս\xbe\xa1x\xfaׇ\xd5\xd5e\xb7\xbeb\xcf\x04}\x19\xa2~\xa9\xb4d\xe0\xf1\xcfּ\xae\x9aѬ\xb9F\xe00\xdaO\xa0=O\xf2\xa8\xa9J\x15c\xc9.\xa65\xe8C\x13\a\x19\x9f\xa7\xfa\x0e\xad\xfd\x8b\xabX\xeapɔ\x86E\x90\xb0\xe3)\x8c\x1c\x8e\x83*H\xe3\xfb\xd5\xf4\xce\xe0\xdf0;\x83\f\xee\xecs\xcek\xe2\x7f\x82\xba\xd3\xf8\x8b\xe1G\x84\xef\xa4q$\x8f\xa6\xc5\x1c\xac\x7f\xe7\xa2\x0f-\xbfU5\xf6\x0f\x83\xee\x8d焴i\xdb\x1b\x9a\xd20q\xec6\xff\x00J\xe2\xc9%\xc9V\xa5\x05\xb2>?.\xfd\xd5I\xd0[\"ַ'\x93\xa0\xea\x8f\xe9g9\xff\x00\xc8d\x7fZ\xf9\x1b\xe2%\xd3\xd8\xfc5\xf1l\xe9\xf7\xa3Ѯ\xb1\xff\x00~\x98\x7fZ\xfa\xe7\\\x8f\xcd\xd0uU\xf5\xb3\x9f\xff\x00E\x9a\xf9#\xe2\x15\xab_|5\xf1\\\t\xf7\xe4\xd1\xee\xc0\xfc!c\xfd*s\xbf\xe3\xd1\f\xc3\xf8\xf4\xbdO\xce\xc5\x1bx\xf4\xe3\xf4\xa5\xa3v\xe0\x0f\xa8\xcd\x15\xe9t>\xe7\xec\xa16\xeea\xf5\xfc\xbdO\xf5\xfc+\xe9\x1fٗ\xc2k\xa6\xf8vo\x11N\xb9\xbcԛ˃?\xc3l\x8cG\xfe>\xdb\xdc\xff\x00\xba+\xe6\xd6Vq\xb2>%\x93\xe4\x8fݏ\x18\xfcȯ\xb8|;\xa6Š\xe9v\x1ad?\xea\xac\xe0\x8e\xddG\xa6\xc5\v\xfc\xc5yy\x8dnH(\x1f/\x9fbeN\x94i\xc7\xed\x1dń\x9f(\xe3\x199\xe7\xaf\xe3\xfezb\xbc\xef^\x93\xfe'\x9a\x87͏߿\xf35\xdb\xd8I\xc8\xfa\xd7\x03\xaf6\xedn\xff\x00\xfe\xbb\xbf\xf35\xe1\xd3\xd8\xf8Y|6\x97S̾5xM5\xcf\x0e\x9dV!\xfe\x9b\xa6\x8d\xcc\xc3\xef<\x04\xfc\xc3\xfe\x02v\xb5x\x01\xc9\xe4\x8c\x13\xc9\a\xb1\xef_^\xb4p̭\x14\xe9\xba)\x01I?\xdc#k~\x8cG\xe3_'\xeb\x9ac\xe8\xba\xcd\xf6\x9f'\u07b5\x99\xa1\xfa\x80x?\x95{\xd8\x1a\x97\x8f!\xf6\xdc?\x8as\xa7*\x13\xdd\x14\xa9:6O\xf9\xff\x009\xa5\xa4c\xb5I\x1dq\x9f˚\xf5\x0f\xaeg\xdb߲\xf5\xd3M\xf0OAW\xff\x00\x96R\xddD>\x82\xe1\xff\x00ƾ\xd1\xf8g'\x9b\xe0m)\xbf\xd9q\xf9H\xc3\xfaW\xc5\xff\x00\xb2\xed\xbb[\xfc\x11\xd0\vu\x95\xee\xa6\xff\x00\xbe\xae_\xfc+\xed/\x86+\xb7\xc0\xbaW\xba\xb9\xfc\xe4j\xf22\xaf\xf7ڇ\xc3a\xff\x00\xdfj\x1d7\x97\xe7)\x8c\xff\x00\xcb@P~ \x8a\xf9f\xebK[\xeb{\x9d5\xd7>|rٟ}\xcaS\x1f\x915\xf5Ld~9\xe7\xe9\x90?\xad|\xf1\xe3\xcd8\xe8\xfe0\xd5!\x1c\x0f?\xed\x11\xff\x00\xba\xe4?\xf3a]9\xe4m\nU<Ǚ\xab8U\xec~W\xc9\x03ڱ\x86A\xb5\xe2\xfd\xdb\x0fu\xe3\xfaSk\xbc\xf8\xe9\xe1\x96\xf0\xa7ŏ\x12Zl\xd9\f\xd7&\xf2\x1ft\x98\t\x01\xfc\xd8\xd7\a]Te\xcf\x04ϰ\xa3>z*}ѱ\xe0\xcbU\xbe\xf1\xa7\x87\xe0\x7f\xba\xfa\x84\x19\xfc$S\xfd+\xec\xab9>o\xa9\xcf\xe7\xcd|i\xe0\xeb\xc5\xd3\xfca\xa0ܷHo\xe0o\xcd\xc0\xfe\xb5\xf6\x15\xb4\xdb[#\xa08\x1f\x9dx\x99\x97\xc5\x13ḕ\xfe\xfe\x9f\xa3:kY+\x87\xd7%\xff\x00\x89\xcd\xf7\xfdvo\xe7]m\xa9\xdc3\xeb\\v\xb9\xff\x00!\x8b\xdf\xfa\xea\xdfμ\xba{\x1f7̝\xaeU\xdf\xdcW\xcf_\x18\xadR\xdb\xc7ڃ'\xfc\xb6\x8e\x19O\xd7\xcbQ\xfd+\xe8\x06ld\x0e\xa6\xbe\x7f\xf8\xc3p\x93x\xf2\xf9S\xfeYE\fg\xeb\xe5\xa9\xfe\xb5\xea\xe0~3\xe8x~\xff\x00Z\x7f3\x8a_\xba)\x1d\x965i\x1b\xa2\r\xc7\xe8:\xff\x00JU\xfb\xa2\xae\xe8z\f\xde*\xf1\x06\x95\xa2B\xbb\xa4\xd4\ue8b3\x1e\xdb\xd8+\x1f\xfb\xe4\x93\xf8W\xb9'ʛ?B\x9c\xb9!)vG\xdd\xff\x00\x06\xb4\x96\xf0\xef\xc2?\tZI\xfe\xba=6\x19\x1f\xfe\xba827\xea\xe6\xbe\xc4\xf0e\xaf\xd8|#\xa2\xc0z\xad\xa4d\xfe*\x0f\xf5\xaf\x9dt\xbd4\\\xdeX\xe9\xb6\xeb\xf2H\xf1[\"z!\xc0\x1f\xa5}@8U\x00\xf0\x00\x03ڼ\xfc\x8d{J\x95j\xf9\xfeg\xc2\xe5\u07fc\xabR\xb7v9s\x8e\x0e\a\xa7\xe9^U\xf1\xafFo;OգR~Si9\xec\xcc\t(߫\x0f½N\xb3\xfcA\xa2G\xe2M\x1e\xebM\x93\x01n\x13\x87\xc7(\xe3\x95o\xc0\xf3\xf8c\xbd}\x06;\x0f\xf5\xaa\x12\xa6z\xb8\xaa>ڌ\xa0~p~\xd8^\t\xfbf\x97\xa4\xf8\xba\xda\"M\x9f\xfa\r\xe8^\x9eS\x12п\xe0Y\x81\xff\x00|W\xcb;J\xe0\x11\x83\xfe\x7f\xcf\xd3\x15\xfa]\xe2o\rA}g\xaah\x1aվ\xfb{\x84k[\x98X\xf2A\x1d\x8f\xa8\xc0a\xee\x01\xed_\x9f\x1f\x12<\x03\x7f\xf0\xd7\xc5ך%\xf8/\xe5\x9d\xf6\xf7\x1d\xa7\x84\xe7d\x83\xdc\xe0\x86\xff\x00h5|\xbe]Z\xd1\xf6\x13\xde!\x92\u2e69}^{\xa3\x95\x97;xm\x9c\xe4?\xf7H\xc9\xcf\xe9\x9f¾\xbf\xf0O\x88\x13\xc4\xde\x1a\xd3uD9i\xe2\x1e`\xfe\xec\x83\xe5q\xff\x00}\x06\xaf\x90\xebӾ\bx\xe94\x1dY\xf4k\xe7X\xeco\x9c\x18d~\x169\xf8\x1f1\xf4`\x00\xfc+\xa3\x1dEՇ4C<\xc0\xbcU\x0ez_\x14O\xa7-&\xdcG\xd7\xfaW!\xac6\xedZ\xf3\xfe\xba\xb7\xf3\xae\x9e\xceB\x1b\x04`\x8221\xef\\u\xf1ݨ\xdc\xff\x00\xd7F\x1f\xaf\xff\x00Z\xbev\x95\xd5\xee~y\x17\xee\xa61\x9a4m\xd2\x1d\xa8\x83{\xb3tU\x1c\x93\xfag\xf0\xaf\x98\xb8ȯs\xfd\x91\xfc\x0e\xfa\u05ceo|K*\xed\xb2\xd1#1B\xcd\xd1\xee\xa4S\xd3\xddS?\xf7\xddx\u038d\xa2\xea\x1e%֬4}&\xdb\xedz\xa5\xf4\xa2\x1bx{3\x9erDz(\x05\x98\xf6\n}k\xf4\x0f᷁l\xfe\x1a\xf8/N\xf0\xf5\x80i~Ι\x96b\xb8{\xab\x86 \xb4\x8c=Y\x8fN\xc0\x85\xa8\xcc+*t\xf9#\xbb;3|Z\xa3ER\x8e\xec\xf5\xaf\x84:+\xea~,k\xcf/\xf7:|[\xf3\xff\x00MOʣ\xf0\xc3\x1f½\xb7\x81\x90\xbd:\x0f\xf0\xfc:~\x15\xcfx\x17\xc3?\xf0\x8bxv\x1bINnf&\xe2\xe7=C\x9c|\xbf\x80\n\xbf\x85t#\xdf9\xef\x9a\xf7r\xbc;\xc3a\xd2}N<\x05\a\x87\xa0\x93\xea\x14\xe5`\xb9'\xa60~\x9d\xe9\xb4W\xad\xae\xe8\xf4\x95\xfa\x1c\aş\x05\xbe\xad\x0f\xf6͔{\xae\xe1LO\x1areAр\xf5^\xfeد\x97>2|)\xb2\xf8\xb5\xe1\x9f#tpk\x16jϧ^\x1f\xe1c\x8dѱ\xeb\xb1\xf1\xcfu\xfb\xdd\x01\x15\xf7,m\x86\x1c\x8c\xf5 \xfe\x9f\x9dy\aĿ\x87\x87K\x92mcK\x85\x8d\x8b\x92\xd3\xdb\x05,a'\xa9\x03\xba\xf3ϧZ\xf9\f\xcf\x03R\x13\xfa\xde\x1f\xe6x8\xba\x13\xa3?oC\xa1\xf9!\xabi\x17\xbe\x1f\xd5.\xf4\xddJ\xdaK;\xfbY\fS[\xc80Q\x87o\xa61\x828 \x8285M\xcf˵\x81\xda}8\xfd}\xab\uebcc\x9f\x05\xf4ߋV+p\x8e\xbaw\x88\xed\xe3\xd9o\xa8\xe4\x10\xea3\xfb\xb9{\x15\xcep\xdfys\xf2\xf7\a\xe2\xcf\x14xWV\xf0f\xb5q\xa4\xebVoc}\t\xe66\x19V\a\xa3#te?\xde\x1dy\xcf9\xab\xc2c!\x8a\x85\xba\xa3\xe8\xb08\xfax\xc8%\xd5n{G\xc1\xaf\x8b˨}\x8b@\xd7%+~ΰZ^?\x02b\xc4*\xa3\x9e\xce{\x1e\xfc\n\xeb~=j\xe9\xf0\xbf[!\x92;\x8b\xbdJ/\xb6Y[\xe4\x10\x14\x927\xc8\a\xdc\x01\x95\xc0^\xacA\xed\x93_(\xcdr\xf6\x00^E\xfe\xb2ݖd\xc6xt`\xcb\xfa\xa8\xafw\xfd\xb5<\xcf\xf8^\x8e]\x1a0\xda.\x98\xea\xad\xe8\xd6Ῑ4\xbe\xa9O\x9a\xf29e\x93\xe1eUϣ\xd4\xf1MCP\xb8կ\xa6\xbc\xbb\x95\xa7\xb8\x99\xb7\xbc\x8f\xc1'\xe9\xdb\xe9\xd0v\xe3\x15\x02\xabI$q\xa4o,\xb28H\xe3\x8dw<\x8cxTU\xfe&c\xd1z\x9eGLԺ~\x9fw\xacj\x16\xb6\x16\x16\xd3\xdf^\xdc\x1d\x90\xda\xdb.\xe9$oa\xfdz\x0f\xe2#\x8c\xfd\x7f\xf0\x17\xf6{\x8b\xe1\xe9\x87\xc4\x1e!\x10\xdfx\xa5\x97\xf7q)\xdd\x06\x9f\x9e\bC\xd4\xc8\x7f\x8aOm\xa3#\x04\xe9\x88\xc5C\r\x1f{~\x87v+\x19O\x05O]\xd6ů\xd9\xdf\xe0\x87\xfc+\x8d?\xfbc[\x8d$\xf1E\xfcA^<\xee\x16P\x9eL(ݘ\xf0]\xbap\x14p\xa2\xbe\xa9\xf8M೨\\.\xbd\x7f\x17\xfa,9\xfb\x12\x11\x8f1\xff\x00\x8a_\xa0?w\xdf'\xb5b\xfc?\xf8\x7f'\x8b\xae\xbe\xd7r\xa6-\x16\x16\xc3\xc8\xd9SpG\xfc\xb3_oS\xdb\xee\u05fa\xc3\x14pB\x91D\xa1\"\x8dv\xaa\xaa\xe0\x00;\x0f\xa7Lv\xe9ڹr\xfc\x1c\xf1u\x16&\xbe\xc8\xf9\\5*\x98\xaa\x8f\x11[f<\xb6\xe3\x9fΒ\x8a+\xed\x1bwi\xf4>\x87E\xa2\n(\xa2\x90\x05;p\xdaA\a\x1d\xf03\x90{Sh\xa4\xf6\xd5\\7V<\xbfǟ\n\xfef\xd44(\x81\fKKc\x19\xcf\xd4\xc7\xeb\xfe\xef\xf8׆x\xf7\xe1և\xf1\x13K\xfe\xca\xd7\xec\x96u\x8c\x9f*d_.\xe2\xdd\xfdQ\xbf\x80\xfa\x83\xc1\xf4=\xbe\xc4\xc6s\xff\x00\xd6\xc8\xfaW3\xe2\xbf\x00i\xde,\xdd,\x8b\xf6[\xe00.b\x1bO\xfc\b\x7f\x10\xaf\x97\xc6\xe5<\xf2\xf6\xb8gg\xd8\xf0\xeb\xe0e\xcd\xedp\xefS\xf2\xab\xe2W\xec\xd3\xe2_\x02\x99.\xac!\x7f\x12苸\xfd\xa2\xd2/\xdfļ\xe7͈d\xb0\xc62W#\xe9\xcdgx\x17\xe0\xff\x00\x8e~0\xdd[^J\xd76\xdaZ\xa2E\xfd\xb1\xac\x97e\U00097011#\x1d\xee\a8\x00\x85\x1e\xa3\x91_\xa1^#\xf0\x1e\xb3\xe1V-=\xb9\x9e\xd5O\xfc}[\x8d\xc9\xf8\x8f\xe0\xaa:\x1f\x85\xf5_\x14\xdc\xecӭ\x9ah\xba5\xc3eaOr\xc7\xef\xfd\x00'\xe9ּ\x8f\xadb\xe3\xfb\x97N\xf2\xee%\x9ab\xd4}\x93\x85\xe5\xdc\xf3/\x86\x7f\a|7\xf0\x9e\xceA\xa6\xdb\xf9ڔɶ\xe7V\xba!\xaee\xf6\xdc\x00\b\x9e\xca\x00\xfa\x9c\x93\xee\xbe\a\xf8[q\xae\xf9w\xba\xba\x1b=0୫\x00\x92O\xfe\xf7\xf7S\xd3ֻ?\b\xfc)Ӽ74W\x97\xac\xba\xa6\xa6\xa4\x15\x92E\xfd\xdcD\x7fq\x0e\x7f2I\xfd\x05v\xe5\x8b\x12q\x8ez\x7f\x9e\x95\xe9\xe12\x89\xd4~\xdb\x16\xf5\xecU\f\x15J\x92\xf6ؗ\xafb;xb\xb6\x85!\x81\x16(\"\x1b#\x8d\x06\x15@\xec\ajsPԕ\xf5\x8a1I(\xec\x8fj\xc9+ \xa2\x8a)\x8c(\xa2\x8aQ\xdc\x16\xe1E\x14U\xb2\x98S\x96\x8a+8\x91\xd0T\xfb\xb7_\xf5\xcb\xfa\x9am\xb7\xfcyA\xfe\xef\xf5\xa2\x8a\xe4\xff\x00\x97\xa7<~1)\xd1\x7f\xae_\xa7\xf5\x14Q]\xbfe\x9dr\xd8t?\xeb\aң\xff\x00\x97\x89\xbf\xdc\xfe\xa6\x8a)\xd3\xd9\x19}\x946O\xf50\xfd\x0f\xf25f㬔QO\xec\xc8p\xd9\x1f\xffُ\xcfB\xdd\x03V\xbc\x90ܻ4\xb1z$U\x9eɤ\aP.y\xd0NM\xcby?ۯY\x92\xc5Z\xa4R\xbbT\xb1A\fr;<\xf5=\xac\r'2\xa7\x1cPD\b\x8a(\xa3\ax\x89\x8df~z@RR\x8a\xed<\xa5\x19\xb7M\x84E\x954XDD\x04E\x94\x18DD\x04D@DD\x04D@DD\x04D@DD\x04DA\x95\x9dDn'\xc8\x12\xb0\xb0\x83%aea\x01\x11\x10\x11\x11\x01\x11\x10\x11\x11\x01\x11\x10\x11\x11\x01\x11\x10}47\xaahoTD\r\r\xea\x9a\x1b\xd5\x11\x03Cz\xa6\x86\xf5D@\xd0ީ\xa1\xbdQ\x1047\xaahoTD\r\r\xea\x9a\x1b\xd5\x11\x03Cz\xa6\x86\xf5D@\xd0ީ\xa1\xbdQ\x1047\xaahoTD\r\r\xea\x9a\x1b\xd5\x11\x03Cz\xa6\x86\xf5D@\xd0ީ\xa1\xbdQ\x1047\xaahoTD\r\r\xea\x9a\x1b\xd5\x11\x03Cz\xa6\x86\xf5D@\xd0ީ\xa1\xbdQ\x10\x7f\xff\xd9"), +} +var ResourceExcelJpg = &fyne.StaticResource{ + StaticName: "excel.jpg", + StaticContent: []byte( + "\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\v\t\t\a\t\t\a\t\t\t\t\v\t\t\t\t\t\t\v\t\v\v\f\v\v\v\f\r\x10\f\x11\x0e\r\x0e\f\x12\x19\x12%\x1a\x1d%\x1d\x19\x1f\x1c))\x16%756\x1a*2>-)0\x19;!\x13\xff\xdb\x00C\x01\a\b\b\v\t\v\x15\v\v\x15,\x1d\x19\x1d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,\xff\xc0\x00\x11\b\x00\xb4\x00\xa2\x03\x01\"\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1b\x00\x01\x00\x02\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\a\x01\x04\x05\x03\x02\xff\xc4\x00N\x10\x00\x01\x03\x02\x02\x02\v\n\v\x06\x04\a\x00\x00\x00\x00\x01\x00\x02\x03\x04\x05\x06\x11\x121\a\x13\x14!QUqr\x92\xb2\xd2\x16\x17\"23Aas\x81\x94\x15BSTt\x91\x93\xa1\xb1\xd1\xd3$6\x82\xa2\xb3\xf0#%Rc45Db\x83\xa3\xc1\xff\xc4\x00\x1a\x01\x01\x00\x03\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x03\x04\x01\x05\x06\xff\xc4\x000\x11\x00\x02\x01\x03\x01\x06\x05\x02\x06\x03\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x11\x12\x13\x14!1QR2Aa\x81\xf0\x05S\x15Bb\x91\xb1\xc1\"q\xe1\xff\xda\x00\f\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xb6\xd1\x11\x00DD\x01\x11\x10\x04D@\x113_\x12K\x14-/\x96FF\xc1\xad\xd29\xach\xf6\xb8\xe4\x80\xfbEǨ\xc4\xf8b\x94\x91%ҕ\xc4y\xa9˪\x0f'\xf8\x01\xcb\xeaӈ-\x97\xa9+c\xa2\xdb\xce\xe4\x10\xbaG\xcb\x1e\xd6\xd7m\xa5\xe0h\x02t\xbe)\xcf0\x172\x8a\xf6\xb0Μ\xf1:Ȉ\xbaX\x11\x11\x00DD\x01\x11\x10\x04D@\x11Fj1\xbe\x19\x80\x90ɪj\b$\x11O\x03\xc0\xccox\xd3h\x0f\xbdr*6Co\x84)-\x8e?\xe9}M@\x1f[\"i\xeb(\xb9$g\x95\xcd(\xf3\x91=EUTc\x8cM7\x92}-0\xff\x00b\x00\xe7}s\x97\xfe\v\x91Qz\xbfUi\n\x8b\x9dk\xda\xedm\x13=\x8c\xe8FC~\xe5\x17Q\x19\xa5\xf5\nk\x92l\xb9*+()FuUT\xd0\x0f\xf7\xe6\x8e>\xb9\v\x91Q\x8b\xf0\xb5>\x97\xed\xc2g\x0f\x8bK\x14\xb2\xe7\xc8\xe0\xdd\x0f\xe6U\x16\xb3\x99\xd7\xc2u\xfdh\xa3\xb4fy}Bo\u008b\x1a\xa3d+{s\x14\xb6\xea\xa9}5\x12E\x00\xcf\xf84\xca\xe3\xd4c\xeb\xec\x9aB\nz*pu\x1d\t&x\xf6\xb9\xc1\xbfʢ(\xa3\xad\x99\xe5yZ^g^\xa3\x12\xe2j\xac\xf6ۥKA\xdeʜ\xb6\x9ce\xff\x00\x804\xfd\xeb\x95$\x92J\xed9d|\x8f:\xdd+\x9c\xf7\x1fk\xc9+\xe5\x14rٞS\x94\xbcO!N\xf6:\xf2\u0603\xd5ۺӨ\"\x90a\x9b\xfc\x16\x17\xdc_-4\xb3\x9a\xb6\xd35\xbb[\xd8\xcd\r\xa4\xc8Nz\\:_r\x94^\x19u\xb4\x94*\xa9K\x91n\"\x83\xf7â\xe2ʯ\xb6\x89;\xe1\xd1qeW\xdbD\xae\xd5\x13\xd9\xde\xe8\xf7\x13\x84P~\xf8t\\YU\xf6\xd1~I\xdf\x0e\x8b\x8b*\xbe\xda$\xd5\x11\xbd\xd1\xee'\b\xa0\xfd\xf0踲\xab\xed\xa2N\xf8t\\YU\xf6\xd1&\xa8\x8d\xee\x8fq8E\a\xef\x87Eŕ_m\x12\xf7\xa6\xc7\xf6ydk*ij\xa9\x98\xe2\x06\xdaK%c=/\f:Yr\x02\x9a\x91\xd5uE\xfebb\x8b\xe5\x8fl\x8cd\x91\xb9\xafc\xdaױ\xcc \xb5\xcdp\xcc\x16\x91\xbd\x91E#IC\xbb\xc6\x7f=߉_+.\xf1\x9f\xcewX\xac,\xa7\xca\x04D@\x11\x11\x00DD\x01\x11\x10\x05%\xc2v\x1b}\xf6K\xa3k_R\xd1J\xcaGE\xb9\xe4\x11\xe6e2\x87if\xd3\xfe\x91\x92\x8d)\x16\x18\xbf\xd3X_r|\xf4\xf3ͺ\xdbJ\xd6\xed&1\xa3\xb4\x99\t\xcfL\x8dz_r\xecq\x9e%\xd44m\x16\xbeD\xb7\xb8\f9\xf2\xb7/yo\xe9\xa7p\x18s\xe5n^\xf2\xdf\xd3Z\xfd\xf0\xad\x9c]]҃\xb4\x9d\xf0\xad\x9c]]҃\xb4\xad\xcc\x0fW6\x9e\x87\xbfp\x18s\xe5n^\xf2\xdf\xd3Y\xee\x03\x0e|\xad\xcb\xde[\xfak\xb9f\xba\xc5y\xa1\x8e\xba(\xa4\x89\x8f\x96x\x83%-.\x06'\x96\x13\xe0\x1c\xb7\xf2Q\xb3\xb2\x15\xb0\x13\xfe_]\xbcH\xf1\xe0\xed.\xff\x00\x8a'(\xdbE&\xd2\xe2lw\x01\x87>V\xe5\xef-\xfd4\xee\x03\x0e|\xad\xcb\xde[\xfak_\xbe\x15\xb3\x8b\xab\xbaPv\x93\xbe\x15\xb3\x8b\xab\xbaT\xfd\xa5\xcc\xc0\xaf6\x9e\x86\xc7p\x18s\xe5n^\xf2\xdf\xd3Q\\Wb\xb7X\xdfle\x1b\xaa\x1c*YR\xe97D\x82C\x9cf04rh\xe1*˵\xd7\xc7t\xa0\xa2\xaf\x8e7\xc6ʨ\xf6ƲB\xd2\xf6\x8c\xcbr%\xbb\xdee\t\xd9\x13\xcbX\xbdUoZ$\x92X\xca9sJ\x92\xa2\xe5\x04C\x99s\xba\xc4\xc6E\x1dd\xed\x8e6\xb68\xda\u05f8\x06\xb5\xa3 \x00\xf4\"\xd3:\xcf**\xb2\xcf1T\x97S\xd1\xde3\xf9\xce\xeb\x15\x85\x97x\xcf\xe7;\xacV\x17\nB\"\xf9\x12Fu=\xa4\xf0\x02\t\xfb\x90\x1fH\x99\x10\x01-p\xccf4\x9a\xe6\xe65f4\x82 \b\xb7h\xad7\x8b\x8bd}\x05\f\xf5\x11\xc6\xfd\xad\xef\x8fk\fk\xf2\x0e\xd1ґ\xc0g\x91\aڷ%\xc2\xf8\x96\b&\xa9\xa8\xa1l\x10A\x1b\xe5\x95\xf3TҀ\xd64fw\x9a\xf2s\xe0\xdeL2j\x9c\xda\xcaL\xe3\"\"\x10\b\x8aK\x85,v\xdbܗF\xd7:v\xb6\x99\x94\xa6-\xa6Q\x16fS(v{\xc7=C\xfb(\x96x\x13\xa7MԖ\x98\x91\xa4Vwp\x98_\xe5k\xbd\xecvS\xb8L/\xf2\xb5\xde\xf6;*z\x19\xafq\xab\xe8{\xe0_\xdd\xea_\xa5W\xff\x00]\xea\xab:\xdd\xce?\x8a\xbb-V\xda+M\x1b(\xa8\xdd#\xa0d\x93<\x19d\xdb\x1f\xa5#\xcbݛ\x80\xe1+\x80p.\x17$\x9d\xb6\xbb|\x93\xff\x00\x16;*R\x8bi\x1a\xab[Np\x84W\x91X\xac\xfej\xcd\xee\x13\v\xfc\xadw\xbd\x8e\xcaw\t\x85\xfeV\xbf\xde\xc7eGC2n5}\x0e\x96\x12\xfdܱ}\x10uܣ;\"yk\x1f\xaa\xad\xebD\xa7\x16\xea*[u\x15%\x15)y\x82\x9e=\xae##\xf4\xdc[\x99;\xee\xf3\xa8>ȞZ\xc5\xea\xabz\xd1+%\xe17\xdc\xc7M\xb6\x1f\xa1\x03:\xcf*,\x1dg\x95\x15'\x8cz;\xc6\x7f9\xddb\xb0\xb2\xef\x19\xfc\xe7u\x8a\xc2\xe1\x00@ \x83\xa8\xe6\n\xb70\x9d\xc6+\x9d\xa6\x9d\xe4F*\xa9N\xe5\xab\xd1kZK\xd8\x06\x8c\x99\x01\xf1\x86G\xeb\xe0U\x1a\x91a\v\xaf\xc1\x97x\xa3\x91\xd9R\xdc\x03i&\xcc\xf8-\x90\x9f\xf0d>Ӣyޅ8<3]\xa5]\x9dN<\x99,\xc7V\xdd\xd5l\x8e\xb9\x8d\xce[t\x9aO\xcbY\xa7\x97&\xbfӼtO\xb0\xaa\xc4\xe9jkK\x9eHk\x1aѾ\xe78赣\xd2NA_\x13C\x15D3\xc13t\xa2\x9e'\xc3+xX\xf6\x96\xb8*\xd3\rX%\ue5a6\x1a\x90LV\x19\f\xaf$oI1$S\x9fh\xcd\xfe\xc1¥8嚮\xedܪE\xaf2wa\xb5\xb6\xd1j\xa1\xa1\xde2\xb1\x9beK\x87Ǩ\x93Ñ\xd9\xf2\xef\x0f@\n/\x8f.\xfa,\x82\xcd\v\xf7ߡS[\xa2~ 9\xc5\x19\xe5>\x11\xe4\x1c*g]Y\x05\xbe\x92\xaa\xb2\xa0\xe5\r4N\x95\xf9kvZ\x9a\xdfI9\x01ʩJʺ\x8a\xfa\xba\xaaʃ\x9c\xd52\xbaW\xf0\f\xf55\xb9\xf9\x80\xc8\x0f@]\x9b\xc2\xc2-\xbc\xa8\xa9ST\xe3\xe7\xfc\x1a舩g\x87v\xe4\xea\xbdA\x11\x14L\xc1v,w\xfa\xab\v\xab]OO\x04Ƭ@\xd7\xed\xe5\xe3DD^F\x8e\x81\xf3\xe9\x1c\xd7\x1d\x11<\x12\x84\xdc\x1e\xa8\xf3&}\xf0n\xdf0\xa1\xe9O\xf9\xa7|\x1b\xb7\xcc(zS\xfej\x18\x8aZ\xd9~\xf5[\xb8\xb90\xe5\xd6{Ͳ:\xe9\xe2\x8a)\x1d=LZ\x10\x97\x16\xe5\x14\x85\x80\xf8[\xfc\xaa\x1cvA\xbbfF\xe0\xa1\xde$x\xd3\xf0\xf2\xa9\x0e\x04\xfd߃\xe9u\xff\x00\xd6*\xac:\xdd\xce?\x8a\x9c\xa4\xd2L\xd9^\xbdHӃO\x8b&]\xf0n\xdf0\xa1\xe9O\xf9\xa7|\x1b\xb7\xcc(zs\xfej\x18\xb3\xf9\xa8kf=\xee\xb7qu\xd9+\xe5\xb9ڭ\xd5\xf2\xb1\x91\xc9U\x0e\xd8\xf6G\x99cN\x91\x19\r-\xff\x002\x86\xec\x89\xe5\xac^\xaa\xb7\xad\x12\x93a/\xdd\xcb\x17\xd1\a]\xca3\xb2'\x96\xb1z\xaa\u07b4J\xd9xON\xe1\xb7m\x97\xd1\x7fD\b\xeb<\xa8\x87Y\xe5EI\xe3\x1e\x8e\xf1\x9f\xcewX\xac,\xbb\xc6\x7f9\xddb\xb0\xb8@.\xce\x1a\xb4|3u\x82\a\xb7:Jm\x1a\xaa\xee\x03\x1b]\xe0Dy\xe7{\x90\x15\xc5$4\x17\x1d\xe0\x01%[\x98J\xcem\x16\xa8\xf6\xe6h\xd6֑UW\x9e\xb6\x122dG\x987\x8f\xa4\x9e\x15(,\xb3U\xad\x1d\xadN<\x91ݚXi\xe1\x9ay\x9c\x19\x14\x11>Y\\u5\x8cis\x8a\x84\xe1\x1cA%m\xd6\xf5OPt~\x11\x95\xf7\nV\x9f\x8a\xe65\xb1\xba/cC2敱\x8e\ue6de\x86\x1bdN\xcaZ\xe3\xa76Z\xdbM\x11\a#\xcevC\x90\x15^RUOCUI[\a\x96\xa5\x99\x930j\xd2\xd1\xd6\xc3\xe8p\xcc\x1eUd\xa5\x86n\xb9\xb9\xd1V)r\\˖\xf1m\x8a\xedn\xab\xa1~A\xd27J\x17\x91\xe4\xe7g\x84\xc7\xea\xe1\xd7\xe8'\x85R\xd2\xc5,\x12\xcb\f\xcc,\x96\x19\x1f\x14\xacv\xb6\xbd\x84\xb5\xc0\xabΖ\xa6\n\xcajj\xa8\x1d\xa5\rLQ\xcd\x11\xe1c\xda\x1c3\xff\x00꯱ݧh\xa9\x86\xed\vr\x8a\xac\x88j\xb2\x1bͨh\xf0^y\xc0e\xca\xdf\xfb\x92k+\"\xfa\x96\xa8\xed\x17\x97\xf0B\x91\x11Rx\xe1Ip\xa4xe\xef\xba\x1b\xee\xe1\xd1\r\xa5ܛ\xb4\x81\xbf\x9c\xbbf\x86\x7fÚ\x8d\"\xeax'Nz$\xa5\x8c\x96nӱw\x05\x8b\xa4\xcf\xcd6\x9d\x8b\xb8,]&~j\xb2E-~\x86\xbd\xf3\xf4\"촋(\xa3kl\xfb\x9bq\t%\r܄m[f\x97\x87\x96^|\xf5\xae\x01\x87b\xfc\xcebŞg?\t\x9a\xfe\xb5\xed\x80\xff\x00\xe4\x11\xfd6\xbb\xfa\x8a\xad:\xdd\xce?\x8a\x93\x96\x12\xe0j\xadq\xa6\x10\x96\x95ij6\x9d\x8b\xb8,]&~i\xb4\xec_\xc1b\xe93\xf3U\x92\xcf棯\xd0˾~\x84^6\xe1m\x14T\x82۴\xee\x11\x1f\xec۟-\xabC3\xe2z5\xa8>ȞZ\xc7\xea\xabz\xd1)6\x12\xfdܱ}\x10uܣ;\"yk\x17\xaa\xad\xebD\xac\x97\x84\xddr\xf5[g\xfd\x103\xac\xf2\xa2\xc1\xd6yQRxǣ\xbcg\xf3\x9d\xd6+\v.\xf1\x9f\xcewX\xac.\x10>\x98\xf7\xc6\xf8\xe4a\xc9\xf1\xbd\xb20\xe4\x0e\x8b\xd8C\x9ar;\xdb\xc5vً\xb1c5\\\x9e}d\x14\xaf\xfcc\\$D\xda%\x19\xca\x1e\x17\x83j\xbe\xe1]s\xa8uUl\xbbl匏KE\xad\x01\xac\xd4\x1a\u058c\x87\x9f\xeb\xf4\xadTD8\xdbo,\x93Yq}m\x9e\x89\x94;\x96:\x98c\x92G\xc4_+\xe3s\x1a\xf3\xa4X2i\x19g\x99\x1c\xabz\xbf\x1bR\xdc誨j\xec\xef\x11\xd4FX]\x1dXqcDŽ״:!\xbe\b\x04o\xf9\x94-\x14\xb52\xf5sUGNx\r\xf4DQ3\x85ײX+oϭe5E<;\x91\xb09\xe6v\xc8\xed-\xb8\xbc\r\x1d\x0e\r\x13\x9f*\xe4-\xba;\x95\xce߷n\x1a\xb9\xa9\xf6\xed\r\xb7i i\xe8g\xa3\x9e`\xea\xcc\xfdh\xb1\xe6N\x9b\x8a\x92\xd7ȓw\xbe\xbdq\x85\xbf\xec\xea\x13\xbd\xf5\xeb\x8c-\xff\x00gP\xb8\x9d\xd2b~6\xac\xe93\xb2\x9d\xd2b~6\xac\xe93\xb2\xa7\x98\x9au\xdbv\xbf\x9e囆\xedU\x16[c(\xaa%\x8aY\x05ED\xdap\x87\x86e+\xf4\x80\xf0\xf7\xd44\xec}z$\x9f\x84-\xfb\xe4\x9f'Q¥x>\xae\xb2\xba\xc9OQW<\x93\xce\xea\x8aƺI\b.-d\xcekF\xf0\xf3*\xe8\xe2LO\x9b\xbfͫ5\x9f\x8c\xce\x1ej\x93\xc6\x16Mu\xe5ES\x86\xa4\xf1\xe4v\xbb\xdf^\xb8\xc2\xdf\xf6u\t\xde\xfa\xf5\xc6\x16\xfd\x7f'P\xb8\x9d\xd2b~6\xac\xe93\xb2\xb3\xdd&'\xe3jΓ;*9\x89\x93]\xb7k\xf9\xeeZ\x96J\x19m\x96\xabu\x04\xb22I)aڞ\xf8Ã\x1ct\x89͡\xdb\xfeu\x0e\xd9\x13\xcbX\xbdUoZ%+\xc3U\x155v+=EL\xaf\x96yi\x83\xa4\x92M\xf7=\xdaN\x19\x92\x14SdO-b\xf5U\xbdh\x95\x92\xf0\x9e\x85\xce7n\x1c\xb8\x10#\xac\xf2\xa2\x1dg\x95\x15'\x8cz;\xc6\x7f9\xddb\xb0\xbe\x9d\xe3?\x9c\xee\xb1_+\x84\x02\" \b\x88\x80\"\"\x00\x88\x88\x02\xfak%\x90\x91\x1cR\xc8[\x91v\xd5\x1c\x92e\x9e\xac\xf4\x01_*u\xb1ז\xc4\x1e\xae\xdd֝v+/\x05\xb4i\xedf\xa1Ԅ\xed\x15\x7f5\xab\xf7i\xfb\t\xb9\xea\xfekW\xee\xd3\xf6\x15\xf1\x9f\xf7\x9a\xc6\x7f\xdej͙\xe8\xfe\x1c\xbb\x88\xde\bd\x8c\xb0R\xb6F=\x8e\xddU\xc7FF9\x8e\xc8\xce\xe2\x0eO\x00\xaa\xb4\xd3\xd5\xe6\xef\xd9j\xf5\x9f\xfai\xf8y\x8a\xf6\xcd?\xbdjN\x19I\x1a*Z*\x91\x8csȢ6\x8a\xbf\x9a\xd5\xfb\xb4\xfd\x85\x9d\xa2\xaf\xe6\xb5z\xfem?a^\xf9\xff\x00y\xa6\x7f\xdej;3?\xe1˸\xe2aF\xbd\x98z\xc6\u05f5\xcdsi@s^\xd75\xc0\xe9\xbbXp\xcdF6D\xf2\xd6/U[։XY\xaa\xf7d?-c\xf5U\xbdh\x94\xa4\xb1\x12\xfb\xa8\xe9\xb7q\xe9\x82\x04u\x9eTY:\xcf**px\xa7^\xab\x0f\xe2JgHe\xb5Vh\xe98\xe9B\xc1Pܳל\x05\xc7\xee\\\xa7\xe7\x1b\x8b%\x0e\x8d\xe31\xa3+]\x1b\xbe\xa7\x80U\xf8\xbc傞v\x96O\x14R\xb0\xfcYX\u05f7\xeap!Y\xb3=I}=?\f\x8a\x1d\x15\xc3Q\x850\xadI%\xf6\xbav8\xfcjm:s\xff\x00\xa0\xb4.=F\xc7\xd6w\xe6ik+\xa9Ϙ9\xd1N\xc1\xec{C\xbf\x99E\xd3fyXU\\\xb0\xca\xd9\x14ʣc\xeb\xc334\xb5\xf4S\x81\xa8L\xc9i\xdc}\xad\xd3\v\x91Q\x851]0%\xd6\xc9%h\xf8ԲE0<\x8d\x0e\x0f\xfeU\x17\x16\x8c\xf2\xb7\xab\x1eqg\x11\x17\xa4\xf4\xf5T\xa7F\xaa\x9e\xa2\x9c\xf0T\xc3,_\xd4h\v\xcc\x10w\xc1\x04z\b+\x85\rc\x98DD\x01m\xd1W\xddhLۂ\xa2\xaa\x13(fݹ\x83\x89pnz:z \xea\xcc\xe5ʵ\x14\xefc\xaf-\x88=]\xbb\xf1\x9dv+,\xba\x84\x1c\xea(\xa7\x827\xf0\xfe+\xe3\v\xa7FN\xc2|?\x8b8\xc2\xe9ѓ\xb0\xaeTV\xe8}OSs\x9f\xdc\x7f=\xcag\xe1\xfcY\xc6\x17N\x8c\x9d\x85\x9f\x87\xf1g\x18]:2v\x15ʉ\xa1\xf5\x1b\x9c\xfe\xe3\xf9\xeeS_\x0f\xe2\xbe0\xbatd\xec'\xc3\xf8\xaf\x8c.\x9d\x19;\n\xe5D\xd0\xfa\x8d\xce\x7fq\xfc\xf7)\xaf\x87\xf1_\x18]:2v\x17\x93\x9d\x89/\x93A\v\x9bp\xae\x9d\x9aM\x84H\xc7\xe8\xc6\x1eFe\xcfsCZ7\x86d\x9f2\xba\x914?6sqo\x84\xa6\xda \xb0\xec}I\xb4\xc1\xba+\xa4\xdb\xf6\xa8\xf6\xfd\xa9\x80Ƕ\xe8\x8d-\x02w\xf2\xcf<\xb7\x91N\x91OJ4\ued3a\x04D]4\x84D@\x11\x11\x01\x82\xd0\xe0C\x80 \xeb\x04f\x0f\xb0\xaeeN\x1fÕ\x99\x9a\x8b]\x13\x9cu\xbd\xb0\xb69:q\xe4\xef\xbdu\x11\b\xb8\xa9sDN\xa3\x01a\xc9s0:\xb6\x98\x9d[L\xe6F\x8f\xe1\xa8\x0f\xfcW\"\xa3cʡ\xbfIu\x89\xfc\r\xaa\xa7s\x0f\xb5\xf18\x8f\xe4V\x1a(\xb8\xa6g\x95\xa5\x19~R\xa5\xa8\xc1x\xaa\f\xcbi`\xa8h\xf3\xd2\xd40\x9e\x8c\xda\x05Hp%\rʆ{譣\xa9\xa6/\x8e\x803tF\xe6\a\xe8\xba|\xf4\x1d✳\x19\xe4|\xear\x8b\x8a\t<\x90\xa7g\nsS\x8b\xe4\x11\x11L\xda\x11\x11\x00DD\x01\x11\x10\x04D@\x11\x11\x00DD\x01\x11\x10\x04D@\x11\x11\x00DD\x01\x11\x10\x04D@\x11\x11\x00DD\x01\x11\x10\x1f\xff\xd9"), +} diff --git a/cmd/v2/theme/icon/excel.jpg b/cmd/v2/theme/icon/excel.jpg new file mode 100644 index 000000000..f5f167d3f Binary files /dev/null and b/cmd/v2/theme/icon/excel.jpg differ diff --git a/cmd/v2/theme/icon/mongodb.jpg b/cmd/v2/theme/icon/mongodb.jpg new file mode 100644 index 000000000..b6f97a47c Binary files /dev/null and b/cmd/v2/theme/icon/mongodb.jpg differ diff --git a/cmd/v2/ui/app_interface.go b/cmd/v2/ui/app_interface.go index 51a74956b..e5b612bf8 100644 --- a/cmd/v2/ui/app_interface.go +++ b/cmd/v2/ui/app_interface.go @@ -34,6 +34,7 @@ var ( &appTerm{}, &appPing{}, &appMgo{}, + &appConfigValid{}, } ) diff --git a/cmd/v2/ui/tool_luban.go b/cmd/v2/ui/tool_luban.go index a4a9ce817..bddf0f1b4 100644 --- a/cmd/v2/ui/tool_luban.go +++ b/cmd/v2/ui/tool_luban.go @@ -431,3 +431,6 @@ func openFile(entry *widget.Entry, w fyne.Window) { func (a *appGen) GetAppName() string { return common.TOOLBAR_GEN } +func(a *appGen) Icon() fyne.Resource{ + return theme.ContentCopyIcon() +} \ No newline at end of file diff --git a/cmd/v2/ui/tool_mgo.go b/cmd/v2/ui/tool_mgo.go index 4a30fc8c5..3453195a2 100644 --- a/cmd/v2/ui/tool_mgo.go +++ b/cmd/v2/ui/tool_mgo.go @@ -11,6 +11,8 @@ import ( "go_dreamfactory/pb" "strings" + mytheme "go_dreamfactory/cmd/v2/theme" + "fyne.io/fyne/v2" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/dialog" @@ -244,3 +246,6 @@ func (this *appMgo) showConWin() { func (a *appMgo) GetAppName() string { return common.TOOLBAR_MGODB } +func (a *appMgo) Icon() fyne.Resource { + return mytheme.ResourceMongodbJpg +} diff --git a/cmd/v2/ui/tool_newlock.go b/cmd/v2/ui/tool_newlock.go index 9a505d981..cf4b47563 100644 --- a/cmd/v2/ui/tool_newlock.go +++ b/cmd/v2/ui/tool_newlock.go @@ -68,3 +68,6 @@ func (this *appLock) LazyInit(ptService service.PttService, obs observer.Observe func (a *appLock) GetAppName() string { return common.TOOLBAR_SEC } +func (a *appLock) Icon() fyne.Resource { + return theme.DownloadIcon() +} diff --git a/cmd/v2/ui/tool_pb.go b/cmd/v2/ui/tool_pb.go index 822362bdc..2362c1442 100644 --- a/cmd/v2/ui/tool_pb.go +++ b/cmd/v2/ui/tool_pb.go @@ -191,6 +191,9 @@ func (this *appPbGen) LazyInit(ptService service.PttService, obs observer.Observ func (a *appPbGen) GetAppName() string { return common.TOOLBAR_PB } +func (a *appPbGen) Icon() fyne.Resource { + return theme.ContentAddIcon() +} type folderList struct { selItemIds []string //选择的ID diff --git a/cmd/v2/ui/tool_ping.go b/cmd/v2/ui/tool_ping.go index 8d0ee168a..9e4cccd40 100644 --- a/cmd/v2/ui/tool_ping.go +++ b/cmd/v2/ui/tool_ping.go @@ -130,3 +130,7 @@ func (this *appPing) ping(targetHost string, ports []string) { func (a *appPing) GetAppName() string { return common.TOOLBAR_PING } + +func (a *appPing) Icon() fyne.Resource { + return theme.ComputerIcon() +} diff --git a/cmd/v2/ui/tool_term.go b/cmd/v2/ui/tool_term.go index 87a04e90c..d2969acce 100644 --- a/cmd/v2/ui/tool_term.go +++ b/cmd/v2/ui/tool_term.go @@ -549,6 +549,9 @@ func (app *appTerm) LazyInit(ptService service.PttService, obs observer.Observer func (a *appTerm) GetAppName() string { return common.TOOLBAR_TERM } +func (a *appTerm) Icon() fyne.Resource { + return theme.MailSendIcon() +} func OpenExplor(dir string) { if dir == "" { diff --git a/cmd/v2/ui/tool_valid.go b/cmd/v2/ui/tool_valid.go new file mode 100644 index 000000000..35062e743 --- /dev/null +++ b/cmd/v2/ui/tool_valid.go @@ -0,0 +1,122 @@ +package ui + +import ( + "go_dreamfactory/cmd/v2/lib/common" + os_storage "go_dreamfactory/cmd/v2/lib/storage" + "go_dreamfactory/cmd/v2/service" + "go_dreamfactory/cmd/v2/service/observer" + mytheme "go_dreamfactory/cmd/v2/theme" + "io/ioutil" + + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/dialog" + fyne_storage "fyne.io/fyne/v2/storage" + "fyne.io/fyne/v2/theme" + "fyne.io/fyne/v2/widget" + "github.com/sirupsen/logrus" +) + +type jsonFileList struct { + selItemId string //选择的文件ID + cacheList common.List + itemList *widget.List + fileTotal int //文件数 +} + +func newJsonFileList() *jsonFileList { + return &jsonFileList{ + cacheList: common.NewList(""), + } +} + +type appConfigValid struct { + appAdapter + jsonFileList +} + +func (a *appConfigValid) LazyInit(pt service.PttService, obs observer.Observer) error { + a.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_VALID, mytheme.ResourceExcelJpg, nil) + a.jsonFileList = *newJsonFileList() + + //load conf + storage, _ := os_storage.NewOSStorage() + conf, err := storage.LoadConfig() + if err != nil { + logrus.Error(err) + return err + } + + if conf.JsonDir!=""{ + + } + content := container.NewMax() + content.Objects = []fyne.CanvasObject{} + + // 打开目录 + openFolder := func(entry *widget.Entry) { + dConf := dialog.NewFolderOpen(func(lu fyne.ListableURI, err error) { + if lu == nil { + return + } + entry.Text = lu.Path() + entry.Refresh() + }, toolWin.w) + luri, _ := fyne_storage.ListerForURI(fyne_storage.NewFileURI(".")) + dConf.SetLocation(luri) + dConf.SetConfirmText("打开") + dConf.SetDismissText("取消") + dConf.Resize(fyne.NewSize(750, 500)) + dConf.Show() + } + //配置json路径 + jsonDir := widget.NewEntry() + jsonDir.PlaceHolder = "json目录" + form := widget.NewForm( + widget.NewFormItem("json目录", container.NewBorder(nil, nil, nil, widget.NewButtonWithIcon("", theme.FolderIcon(), func() { + openFolder(jsonDir) + a.jsonFileList.initItem(jsonDir.Text) + }), jsonDir)), + ) + + jsonDir.SetText(conf.JsonDir) + + c := container.NewBorder(form, nil, nil, nil) + + content.Objects = append(content.Objects, c) + a.tabItem.Content = content + return nil +} + +func (a *appConfigValid) GetAppName() string { + return common.TOOLBAR_VALID +} + +func (a *appConfigValid) Icon() fyne.Resource { + return mytheme.ResourceExcelJpg +} + +func (f *jsonFileList) initItem(dir string) { + files, err := ioutil.ReadDir(dir) + if err != nil { + logrus.Error(err) + return + } + + for _, file := range files { + if file.IsDir() { + if file.Name() == ".vscode" { + continue + } + fm := common.Item{ + Text: file.Name(), + Checked: false, + } + f.cacheList.Items = append(f.cacheList.Items, fm) + // f.selItemIds = append(f.selItemIds, fm.Id) + f.fileTotal++ + // logrus.Debugf("%v", fm.Id) + } + } + +} diff --git a/cmd/v2/ui/toolwindow.go b/cmd/v2/ui/toolwindow.go index d72f02287..146635d60 100644 --- a/cmd/v2/ui/toolwindow.go +++ b/cmd/v2/ui/toolwindow.go @@ -10,6 +10,8 @@ import ( "net/http" "time" + mytheme "go_dreamfactory/cmd/v2/theme" + "fyne.io/fyne/v2" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/dialog" @@ -64,10 +66,15 @@ func NewToolWindow(ui *UIImpl, parent fyne.Window) ToolWindow { widget.NewToolbarAction(theme.ComputerIcon(), func() { openApp2(mw.at, common.TOOLBAR_PING) }), - widget.NewToolbarAction(theme.SettingsIcon(), func() { + + widget.NewToolbarAction(mytheme.ResourceMongodbJpg, func() { openApp2(mw.at, common.TOOLBAR_MGODB) }), + widget.NewToolbarAction(mytheme.ResourceExcelJpg, func() { + openApp2(mw.at, common.TOOLBAR_VALID) + }), + widget.NewToolbarSpacer(), widget.NewToolbarAction(theme.HelpIcon(), func() { showAbout() @@ -126,7 +133,7 @@ func (ui *ToolWindowImpl) quiteHandle() { func (ui *ToolWindowImpl) syncConfig() { cli := http.Client{Timeout: time.Second * 10} - r, err := cli.Get("http://10.0.0.9:8081/prd/config.json") + r, err := cli.Get("http://10.0.0.9:8080/prd/config.json") if err != nil { logrus.Error(err) dialog.ShowError(err, ui.w)