Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev #217

Merged
merged 2 commits into from
Nov 21, 2023
Merged

Dev #217

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/internal/i18n/locale/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
"dictionary": "字典管理",
"api": "接口管理",
"authority": "授权管理",
"captcha": "验证代码",
"captcha": "验证码",
"menu": "菜单管理",
"role": "角色管理",
"user": "用户管理",
Expand Down
24 changes: 1 addition & 23 deletions api/internal/logic/user/get_user_perm_code_logic.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,14 @@ package user

import (
"context"
"fmt"
"net/http"
"strconv"
"strings"

"github.com/suyuan32/simple-admin-common/msg/logmsg"
"github.com/zeromicro/go-zero/core/errorx"
"github.com/zeromicro/go-zero/core/stores/redis"

"github.com/suyuan32/simple-admin-common/i18n"
"github.com/zeromicro/go-zero/core/errorx"

"github.com/suyuan32/simple-admin-core/api/internal/svc"
"github.com/suyuan32/simple-admin-core/api/internal/types"
"github.com/suyuan32/simple-admin-core/rpc/types/core"

"github.com/zeromicro/go-zero/core/logx"
)

Expand Down Expand Up @@ -48,18 +41,3 @@ func (l *GetUserPermCodeLogic) GetUserPermCode() (resp *types.PermCodeResp, err
Data: strings.Split(roleId, ","),
}, nil
}

func setRoleInfoToRedis(roleId uint64, rds *redis.Redis, roleInfos []*core.RoleInfo) (err error) {
if _, err := rds.Hget("roleData", strconv.Itoa(int(roleId))); err != nil {
for _, v := range roleInfos {
err = rds.Hset("roleData", strconv.Itoa(int(*v.Id)), *v.Name)
err = rds.Hset("roleData", fmt.Sprintf("%d_code", v.Id), *v.Code)
err = rds.Hset("roleData", fmt.Sprintf("%d_status", v.Id), strconv.Itoa(int(*v.Status)))
if err != nil {
logx.Errorw(logmsg.RedisError, logx.Field("detail", err.Error()))
return errorx.NewCodeInternalError(i18n.RedisError)
}
}
}
return nil
}
47 changes: 47 additions & 0 deletions api/internal/svc/role_data.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package svc

import (
"context"
"github.com/suyuan32/simple-admin-common/enum/common"
"github.com/suyuan32/simple-admin-common/i18n"
"github.com/suyuan32/simple-admin-core/rpc/types/core"
"github.com/zeromicro/go-zero/core/errorx"
"github.com/zeromicro/go-zero/core/logx"
"strings"
)

func (l *ServiceContext) LoadBanRoleData() error {
if !l.Config.CoreRpc.Enabled {
return errorx.NewCodeInternalError(i18n.ServiceUnavailable)
}

if l.BanRoleData == nil {
l.BanRoleData = make(map[string]bool)
}

roleData, err := l.CoreRpc.GetRoleList(context.Background(), &core.RoleListReq{
Page: 1,
PageSize: 1000,
})

if err != nil {
if strings.Contains(err.Error(), i18n.DatabaseError) {
return nil
}
logx.Error("failed to load role data, please check if initialize the database")
return errorx.NewCodeInternalError("failed to load role data")
}

var state bool
for _, v := range roleData.Data {
if uint8(*v.Status) == common.StatusNormal {
state = false
} else {
state = true
}

l.BanRoleData[*v.Code] = state
}

return nil
}
44 changes: 1 addition & 43 deletions api/internal/svc/service_context.go
Original file line number Diff line number Diff line change
@@ -1,20 +1,14 @@
package svc

import (
"context"
"github.com/mojocn/base64Captcha"
"github.com/suyuan32/simple-admin-common/enum/common"
"github.com/suyuan32/simple-admin-common/i18n"
"github.com/suyuan32/simple-admin-common/utils/captcha"
i18n2 "github.com/suyuan32/simple-admin-core/api/internal/i18n"
"github.com/suyuan32/simple-admin-core/api/internal/middleware"
"github.com/suyuan32/simple-admin-core/rpc/types/core"
"github.com/suyuan32/simple-admin-job/jobclient"
"github.com/suyuan32/simple-admin-message-center/mcmsclient"
"github.com/zeromicro/go-zero/core/errorx"
"github.com/zeromicro/go-zero/core/logx"
"strings"

"github.com/suyuan32/simple-admin-job/jobclient"

"github.com/suyuan32/simple-admin-core/api/internal/config"
"github.com/suyuan32/simple-admin-core/rpc/coreclient"
Expand Down Expand Up @@ -69,39 +63,3 @@ func NewServiceContext(c config.Config) *ServiceContext {

return svc
}

func (l *ServiceContext) LoadBanRoleData() error {
if !l.Config.CoreRpc.Enabled {
return errorx.NewCodeInternalError(i18n.ServiceUnavailable)
}

if l.BanRoleData == nil {
l.BanRoleData = make(map[string]bool)
}

roleData, err := l.CoreRpc.GetRoleList(context.Background(), &core.RoleListReq{
Page: 1,
PageSize: 1000,
})

if err != nil {
if strings.Contains(err.Error(), i18n.DatabaseError) {
return nil
}
logx.Error("failed to load role data, please check if initialize the database")
return errorx.NewCodeInternalError("failed to load role data")
}

var state bool
for _, v := range roleData.Data {
if uint8(*v.Status) == common.StatusNormal {
state = false
} else {
state = true
}

l.BanRoleData[*v.Code] = state
}

return nil
}
12 changes: 6 additions & 6 deletions deploy/docker-compose/all_in_one/mysql/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ services:
memory: 200M

core-rpc:
image: ryanpower/core-rpc-docker:v1.2.2
image: ryanpower/core-rpc-docker:v1.2.3
container_name: core-rpc
restart: always
ports:
Expand All @@ -83,7 +83,7 @@ services:
memory: 200M

job-rpc:
image: ryanpower/job-rpc-docker:v1.2.2
image: ryanpower/job-rpc-docker:v1.2.3
container_name: job-rpc
restart: always
ports:
Expand All @@ -108,7 +108,7 @@ services:
memory: 200M

core-api:
image: ryanpower/core-api-docker:v1.2.2
image: ryanpower/core-api-docker:v1.2.3
container_name: core-api
restart: always
environment:
Expand All @@ -135,7 +135,7 @@ services:
memory: 200M

backend-ui:
image: ryanpower/backend-ui-docker:v1.2.2
image: ryanpower/backend-ui-docker:v1.2.3
container_name: backend-ui
restart: always
ports:
Expand All @@ -154,7 +154,7 @@ services:
memory: 200M

fms-api:
image: ryanpower/fms-api-docker:v1.2.2
image: ryanpower/fms-api-docker:v1.2.3
container_name: fms-api
restart: always
# environment:
Expand Down Expand Up @@ -185,7 +185,7 @@ services:
memory: 200M

mcms-rpc:
image: ryanpower/mcms-rpc-docker:v1.2.2
image: ryanpower/mcms-rpc-docker:v1.2.3
container_name: mcms-rpc
restart: always
environment:
Expand Down
12 changes: 6 additions & 6 deletions deploy/docker-compose/all_in_one/postgresql/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ services:
memory: 200M

core-rpc:
image: ryanpower/core-rpc-docker:v1.2.2
image: ryanpower/core-rpc-docker:v1.2.3
container_name: core-rpc
restart: always
# ports:
Expand All @@ -75,7 +75,7 @@ services:
memory: 200M

job-rpc:
image: ryanpower/job-rpc-docker:v1.2.2
image: ryanpower/job-rpc-docker:v1.2.3
container_name: job-rpc
restart: always
# ports:
Expand All @@ -94,7 +94,7 @@ services:
memory: 200M

core-api:
image: ryanpower/core-api-docker:v1.2.2
image: ryanpower/core-api-docker:v1.2.3
container_name: core-api
restart: always
environment:
Expand All @@ -116,7 +116,7 @@ services:
memory: 200M

backend-ui:
image: ryanpower/backend-ui-docker:v1.2.2
image: ryanpower/backend-ui-docker:v1.2.3
container_name: backend-ui
restart: always
ports:
Expand All @@ -135,7 +135,7 @@ services:
memory: 200M

fms-api:
image: ryanpower/fms-api-docker:v1.2.2
image: ryanpower/fms-api-docker:v1.2.3
container_name: fms-api
restart: always
# environment:
Expand All @@ -160,7 +160,7 @@ services:
memory: 200M

mcms-rpc:
image: ryanpower/mcms-rpc-docker:v1.2.2
image: ryanpower/mcms-rpc-docker:v1.2.3
container_name: mcms-rpc
restart: always
# environment:
Expand Down
2 changes: 1 addition & 1 deletion deploy/k8s/log-collecting/filebeat/filebeat-deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ spec:
]
env:
- name: ELASTICSEARCH_HOST
value: "192.168.50.216" # host address
value: "localhost" # host address
- name: ELASTICSEARCH_PORT
value: "9200"
- name: ELASTICSEARCH_USERNAME
Expand Down
18 changes: 9 additions & 9 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@ module github.com/suyuan32/simple-admin-core
go 1.20

require (
entgo.io/ent v0.12.4
entgo.io/ent v0.12.5
github.com/casbin/casbin/v2 v2.77.2
github.com/duke-git/lancet/v2 v2.2.7
github.com/gofrs/uuid/v5 v5.0.0
github.com/mojocn/base64Captcha v1.3.5
github.com/suyuan32/simple-admin-common v1.2.2
github.com/suyuan32/simple-admin-job v1.2.2
github.com/suyuan32/simple-admin-message-center v1.2.2
github.com/suyuan32/simple-admin-common v1.2.3
github.com/suyuan32/simple-admin-job v1.2.3
github.com/suyuan32/simple-admin-message-center v1.2.3
github.com/zeromicro/go-zero v1.6.0
golang.org/x/oauth2 v0.13.0
golang.org/x/oauth2 v0.14.0
google.golang.org/grpc v1.59.0
google.golang.org/protobuf v1.31.0
)
Expand Down Expand Up @@ -111,12 +111,12 @@ require (
go.uber.org/automaxprocs v1.5.3 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.24.0 // indirect
golang.org/x/crypto v0.14.0 // indirect
golang.org/x/crypto v0.15.0 // indirect
golang.org/x/image v0.10.0 // indirect
golang.org/x/mod v0.12.0 // indirect
golang.org/x/net v0.17.0 // indirect
golang.org/x/sys v0.13.0 // indirect
golang.org/x/term v0.13.0 // indirect
golang.org/x/net v0.18.0 // indirect
golang.org/x/sys v0.14.0 // indirect
golang.org/x/term v0.14.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.3.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
Expand Down
32 changes: 18 additions & 14 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2k
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
entgo.io/ent v0.8.0/go.mod h1:KNjsukat/NJi6zJh1utwRadsbGOZsBbAZNDxkW7tMCc=
entgo.io/ent v0.12.4 h1:LddPnAyxls/O7DTXZvUGDj0NZIdGSu317+aoNLJWbD8=
entgo.io/ent v0.12.4/go.mod h1:Y3JVAjtlIk8xVZYSn3t3mf8xlZIn5SAOXZQxD6kKI+Q=
entgo.io/ent v0.12.5 h1:KREM5E4CSoej4zeGa88Ou/gfturAnpUv0mzAjch1sj4=
entgo.io/ent v0.12.5/go.mod h1:Y3JVAjtlIk8xVZYSn3t3mf8xlZIn5SAOXZQxD6kKI+Q=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v1.0.0 h1:dtDWrepsVPfW9H/4y7dDgFc2MBUSeJhlaDtK13CxFlU=
github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
Expand Down Expand Up @@ -464,12 +464,12 @@ github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/suyuan32/simple-admin-common v1.2.2 h1:0TRPwuZE2GfuLypEqykU9b++W/k5uevbrAwQ5IylIOU=
github.com/suyuan32/simple-admin-common v1.2.2/go.mod h1:WAc8SBBgrjSuo/A8NiBTgTzpCKb6JnpOErRUcJbgccI=
github.com/suyuan32/simple-admin-job v1.2.2 h1:wO8GEfJLqRjOenMX61eQ4hcOgylJkkl16+Oe/6kzmKw=
github.com/suyuan32/simple-admin-job v1.2.2/go.mod h1:59P+CG7NjNio4f861GqN37CpGlbnzF/AY4GpE1FoxHg=
github.com/suyuan32/simple-admin-message-center v1.2.2 h1:lF8nBWbpk+teONHcldx4yJrzps+LppDbVrFgnoezHzE=
github.com/suyuan32/simple-admin-message-center v1.2.2/go.mod h1:M9M1DwJtThVQ2IzFMnXi1qqxbPMr+5T6T38wABcKaJQ=
github.com/suyuan32/simple-admin-common v1.2.3 h1:J49InJbNsacQjlzLaZaC0v0597l3jO5Lw8NE8WUm7SQ=
github.com/suyuan32/simple-admin-common v1.2.3/go.mod h1:ygMZXPe0hfJUhAJEmHrAgy5Eg1BE5fbMKzf2F2qzVrA=
github.com/suyuan32/simple-admin-job v1.2.3 h1:bqBBb2pdp3Wya2A9z/8dSj3CU1uH3cZP1lalzTegoPc=
github.com/suyuan32/simple-admin-job v1.2.3/go.mod h1:s9xcl89EOryTwMn8ECHaObDv4r3RcpL/zOSdUzQo7ws=
github.com/suyuan32/simple-admin-message-center v1.2.3 h1:cpJD8ORT/BcrXnaqRkmKJdxYv9UnuWjyJEoxIbWx0YQ=
github.com/suyuan32/simple-admin-message-center v1.2.3/go.mod h1:+85eyA1SRCQOnpSI5NdzL2E3Uh+DN891TEE8t6W0CeU=
github.com/suyuan32/simple-admin-tools v1.6.0 h1:10Dw2oJCEHYnfd6KUMWPsRAlJReQ1dBlE2MLjIVJwhM=
github.com/suyuan32/simple-admin-tools v1.6.0/go.mod h1:m1qiRoEUmM7jwq8Do2/WGRVFUDjYkdUXFQcRiBZT+tg=
github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM=
Expand Down Expand Up @@ -552,8 +552,8 @@ golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA=
golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
Expand Down Expand Up @@ -607,11 +607,15 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg=
golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY=
golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0=
golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0=
golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
Expand Down Expand Up @@ -654,14 +658,14 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek=
golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8=
golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
Expand Down
Loading