From 8f83310022eb4142610eb972fa973922f6540466 Mon Sep 17 00:00:00 2001 From: Jakub Onderka Date: Wed, 7 Aug 2019 17:44:43 +0200 Subject: [PATCH 001/122] nginx: Remove TLSv1.1 support Signed-off-by: Jakub Onderka --- make/photon/prepare/templates/nginx/nginx.https.conf.jinja | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make/photon/prepare/templates/nginx/nginx.https.conf.jinja b/make/photon/prepare/templates/nginx/nginx.https.conf.jinja index b497fb5ec..29b76c37a 100644 --- a/make/photon/prepare/templates/nginx/nginx.https.conf.jinja +++ b/make/photon/prepare/templates/nginx/nginx.https.conf.jinja @@ -39,7 +39,7 @@ http { ssl_certificate_key {{ssl_cert_key}}; # Recommendations from https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html - ssl_protocols TLSv1.1 TLSv1.2; + ssl_protocols TLSv1.2; ssl_ciphers '!aNULL:kECDH+AESGCM:ECDH+AESGCM:RSA+AESGCM:kECDH+AES:ECDH+AES:RSA+AES:'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; From a727915fde08e10f64dc2ae24b5d9c3200ee8d70 Mon Sep 17 00:00:00 2001 From: "xiaorui.zou" Date: Fri, 30 Aug 2019 13:54:07 +0800 Subject: [PATCH 002/122] fix portal Chinese translate Signed-off-by: xiaorui.zou Signed-off-by: xiaorui.zou --- src/portal/src/i18n/lang/zh-cn-lang.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/portal/src/i18n/lang/zh-cn-lang.json b/src/portal/src/i18n/lang/zh-cn-lang.json index 8ac3c8f77..b87147df0 100644 --- a/src/portal/src/i18n/lang/zh-cn-lang.json +++ b/src/portal/src/i18n/lang/zh-cn-lang.json @@ -805,8 +805,8 @@ "SCANNING_POLICY": "基于不同需求设置镜像扫描策略。‘无’:不设置任何策略;‘每日定时’:每天在设置的时间定时执行扫描。", "VERIFY_CERT": "检查来自LDAP服务端的证书", "READONLY_TOOLTIP": "选中,表示正在维护状态,不可删除仓库及标签,也不可以推送镜像。", - "REPO_TOOLTIP": "用户在此模式下无法对图像执行任何操作。", - "WEBHOOK_TOOLTIP": "当执行推送,拉动,删除,扫描图像或图表等特定操作时,启用 webhooks 以在指定端点接收回调", + "REPO_TOOLTIP": "用户在此模式下无法对镜像执行任何操作。", + "WEBHOOK_TOOLTIP": "当执行推送,拉动,删除,扫描镜像或 chart 等特定操作时,启用 webhooks 以在指定端点接收回调", "HOURLY_CRON":"每小时运行一次。相当于 0 0 * * * *", "WEEKLY_CRON":"每周一次,周六/周日午夜之间开始。相当于 0 0 * * * *", "DAILY_CRON":"每天午夜运行一次。相当于 0 0 * * * *" From 44a9e5d12739d589b2dc682d587e0e3e1b1a9f38 Mon Sep 17 00:00:00 2001 From: gklp Date: Sun, 28 Jul 2019 21:00:06 +0300 Subject: [PATCH 003/122] All redirect operations should have content-type as json Signed-off-by: gklp --- src/common/api/base.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/api/base.go b/src/common/api/base.go index 928c37e08..bb1750a56 100644 --- a/src/common/api/base.go +++ b/src/common/api/base.go @@ -112,6 +112,7 @@ func (b *BaseAPI) Redirect(statusCode int, resouceID string) { requestURI := b.Ctx.Request.RequestURI resourceURI := requestURI + "/" + resouceID + b.Ctx.ResponseWriter.Header().Set("Content-Type", "application/json") b.Ctx.Redirect(statusCode, resourceURI) } From dee3defeff52510c1c98f1b5455273ade5f7079f Mon Sep 17 00:00:00 2001 From: gklp Date: Mon, 26 Aug 2019 14:15:03 +0300 Subject: [PATCH 004/122] refactored Signed-off-by: gklp --- src/common/api/base.go | 1 - src/core/api/robot.go | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/common/api/base.go b/src/common/api/base.go index bb1750a56..928c37e08 100644 --- a/src/common/api/base.go +++ b/src/common/api/base.go @@ -112,7 +112,6 @@ func (b *BaseAPI) Redirect(statusCode int, resouceID string) { requestURI := b.Ctx.Request.RequestURI resourceURI := requestURI + "/" + resouceID - b.Ctx.ResponseWriter.Header().Set("Content-Type", "application/json") b.Ctx.Redirect(statusCode, resourceURI) } diff --git a/src/core/api/robot.go b/src/core/api/robot.go index be49983a4..870310e71 100644 --- a/src/core/api/robot.go +++ b/src/core/api/robot.go @@ -161,6 +161,10 @@ func (r *RobotAPI) Post() { Name: robot.Name, Token: rawTk, } + + w := r.Ctx.ResponseWriter + w.Header().Set("Content-Type", "application/json") + r.Redirect(http.StatusCreated, strconv.FormatInt(id, 10)) r.Data["json"] = robotRep r.ServeJSON() From 495a257ab519ac36e980f810ccd70b4bf80e1453 Mon Sep 17 00:00:00 2001 From: DQ Date: Tue, 3 Sep 2019 12:45:46 +0800 Subject: [PATCH 005/122] Add logic to read clair and notary config Signed-off-by: DQ --- make/photon/prepare/main.py | 2 +- make/photon/prepare/utils/configs.py | 93 +++++++++++++++------------- 2 files changed, 51 insertions(+), 44 deletions(-) diff --git a/make/photon/prepare/main.py b/make/photon/prepare/main.py index e617baebc..bec165455 100644 --- a/make/photon/prepare/main.py +++ b/make/photon/prepare/main.py @@ -29,7 +29,7 @@ old_private_key_pem_path, old_crt_path) def main(conf, with_notary, with_clair, with_chartmuseum): delfile(config_dir) - config_dict = parse_yaml_config(conf) + config_dict = parse_yaml_config(conf, with_notary=with_notary, with_clair=with_clair, with_chartmuseum=with_chartmuseum) validate(config_dict, notary_mode=with_notary) prepare_log_configs(config_dict) diff --git a/make/photon/prepare/utils/configs.py b/make/photon/prepare/utils/configs.py index f3b50c3e5..29a2614d7 100644 --- a/make/photon/prepare/utils/configs.py +++ b/make/photon/prepare/utils/configs.py @@ -56,7 +56,7 @@ def parse_versions(): versions = yaml.load(f) return versions -def parse_yaml_config(config_file_path): +def parse_yaml_config(config_file_path, with_notary, with_clair, with_chartmuseum): ''' :param configs: config_parser object :returns: dict of configs @@ -117,27 +117,31 @@ def parse_yaml_config(config_file_path): config_dict['harbor_db_sslmode'] = 'disable' config_dict['harbor_db_max_idle_conns'] = db_configs.get("max_idle_conns") or default_db_max_idle_conns config_dict['harbor_db_max_open_conns'] = db_configs.get("max_open_conns") or default_db_max_open_conns - # clari db - config_dict['clair_db_host'] = 'postgresql' - config_dict['clair_db_port'] = 5432 - config_dict['clair_db_name'] = 'postgres' - config_dict['clair_db_username'] = 'postgres' - config_dict['clair_db_password'] = db_configs.get("password") or '' - config_dict['clair_db_sslmode'] = 'disable' - # notary signer - config_dict['notary_signer_db_host'] = 'postgresql' - config_dict['notary_signer_db_port'] = 5432 - config_dict['notary_signer_db_name'] = 'notarysigner' - config_dict['notary_signer_db_username'] = 'signer' - config_dict['notary_signer_db_password'] = 'password' - config_dict['notary_signer_db_sslmode'] = 'disable' - # notary server - config_dict['notary_server_db_host'] = 'postgresql' - config_dict['notary_server_db_port'] = 5432 - config_dict['notary_server_db_name'] = 'notaryserver' - config_dict['notary_server_db_username'] = 'server' - config_dict['notary_server_db_password'] = 'password' - config_dict['notary_server_db_sslmode'] = 'disable' + + if with_clair: + # clair db + config_dict['clair_db_host'] = 'postgresql' + config_dict['clair_db_port'] = 5432 + config_dict['clair_db_name'] = 'postgres' + config_dict['clair_db_username'] = 'postgres' + config_dict['clair_db_password'] = db_configs.get("password") or '' + config_dict['clair_db_sslmode'] = 'disable' + + if with_notary: + # notary signer + config_dict['notary_signer_db_host'] = 'postgresql' + config_dict['notary_signer_db_port'] = 5432 + config_dict['notary_signer_db_name'] = 'notarysigner' + config_dict['notary_signer_db_username'] = 'signer' + config_dict['notary_signer_db_password'] = 'password' + config_dict['notary_signer_db_sslmode'] = 'disable' + # notary server + config_dict['notary_server_db_host'] = 'postgresql' + config_dict['notary_server_db_port'] = 5432 + config_dict['notary_server_db_name'] = 'notaryserver' + config_dict['notary_server_db_username'] = 'server' + config_dict['notary_server_db_password'] = 'password' + config_dict['notary_server_db_sslmode'] = 'disable' # Data path volume @@ -240,27 +244,30 @@ def parse_yaml_config(config_file_path): config_dict['harbor_db_sslmode'] = external_db_configs['harbor']['ssl_mode'] config_dict['harbor_db_max_idle_conns'] = external_db_configs['harbor'].get("max_idle_conns") or default_db_max_idle_conns config_dict['harbor_db_max_open_conns'] = external_db_configs['harbor'].get("max_open_conns") or default_db_max_open_conns - # clair db - config_dict['clair_db_host'] = external_db_configs['clair']['host'] - config_dict['clair_db_port'] = external_db_configs['clair']['port'] - config_dict['clair_db_name'] = external_db_configs['clair']['db_name'] - config_dict['clair_db_username'] = external_db_configs['clair']['username'] - config_dict['clair_db_password'] = external_db_configs['clair']['password'] - config_dict['clair_db_sslmode'] = external_db_configs['clair']['ssl_mode'] - # notary signer - config_dict['notary_signer_db_host'] = external_db_configs['notary_signer']['host'] - config_dict['notary_signer_db_port'] = external_db_configs['notary_signer']['port'] - config_dict['notary_signer_db_name'] = external_db_configs['notary_signer']['db_name'] - config_dict['notary_signer_db_username'] = external_db_configs['notary_signer']['username'] - config_dict['notary_signer_db_password'] = external_db_configs['notary_signer']['password'] - config_dict['notary_signer_db_sslmode'] = external_db_configs['notary_signer']['ssl_mode'] - # notary server - config_dict['notary_server_db_host'] = external_db_configs['notary_server']['host'] - config_dict['notary_server_db_port'] = external_db_configs['notary_server']['port'] - config_dict['notary_server_db_name'] = external_db_configs['notary_server']['db_name'] - config_dict['notary_server_db_username'] = external_db_configs['notary_server']['username'] - config_dict['notary_server_db_password'] = external_db_configs['notary_server']['password'] - config_dict['notary_server_db_sslmode'] = external_db_configs['notary_server']['ssl_mode'] + + if with_clair: + # clair db + config_dict['clair_db_host'] = external_db_configs['clair']['host'] + config_dict['clair_db_port'] = external_db_configs['clair']['port'] + config_dict['clair_db_name'] = external_db_configs['clair']['db_name'] + config_dict['clair_db_username'] = external_db_configs['clair']['username'] + config_dict['clair_db_password'] = external_db_configs['clair']['password'] + config_dict['clair_db_sslmode'] = external_db_configs['clair']['ssl_mode'] + if with_notary: + # notary signer + config_dict['notary_signer_db_host'] = external_db_configs['notary_signer']['host'] + config_dict['notary_signer_db_port'] = external_db_configs['notary_signer']['port'] + config_dict['notary_signer_db_name'] = external_db_configs['notary_signer']['db_name'] + config_dict['notary_signer_db_username'] = external_db_configs['notary_signer']['username'] + config_dict['notary_signer_db_password'] = external_db_configs['notary_signer']['password'] + config_dict['notary_signer_db_sslmode'] = external_db_configs['notary_signer']['ssl_mode'] + # notary server + config_dict['notary_server_db_host'] = external_db_configs['notary_server']['host'] + config_dict['notary_server_db_port'] = external_db_configs['notary_server']['port'] + config_dict['notary_server_db_name'] = external_db_configs['notary_server']['db_name'] + config_dict['notary_server_db_username'] = external_db_configs['notary_server']['username'] + config_dict['notary_server_db_password'] = external_db_configs['notary_server']['password'] + config_dict['notary_server_db_sslmode'] = external_db_configs['notary_server']['ssl_mode'] else: config_dict['external_database'] = False From 4ac145b45b8bf317a35e33026e4411db5f62a81c Mon Sep 17 00:00:00 2001 From: DQ Date: Fri, 6 Sep 2019 14:50:47 +0800 Subject: [PATCH 006/122] Fix: Add authenticate to projects head Project head only allow authenticated user to call. Signed-off-by: DQ --- src/core/api/project.go | 6 ++++++ src/core/api/project_test.go | 24 +++++++++++++++++++++--- src/core/controllers/base.go | 2 +- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/core/api/project.go b/src/core/api/project.go index 77285453c..40559991a 100644 --- a/src/core/api/project.go +++ b/src/core/api/project.go @@ -234,6 +234,12 @@ func (p *ProjectAPI) Post() { // Head ... func (p *ProjectAPI) Head() { + + if !p.SecurityCtx.IsAuthenticated() { + p.SendUnAuthorizedError(errors.New("Unauthorized")) + return + } + name := p.GetString("project_name") if len(name) == 0 { p.SendBadRequestError(errors.New("project_name is needed")) diff --git a/src/core/api/project_test.go b/src/core/api/project_test.go index 2c2d3d8fe..9944fbcbb 100644 --- a/src/core/api/project_test.go +++ b/src/core/api/project_test.go @@ -329,13 +329,13 @@ func TestDeleteProject(t *testing.T) { } func TestProHead(t *testing.T) { - fmt.Println("\nTest for Project HEAD API") + t.Log("\nTest for Project HEAD API") assert := assert.New(t) apiTest := newHarborAPI() // ----------------------------case 1 : Response Code=200----------------------------// - fmt.Println("case 1: response code:200") + t.Log("case 1: response code:200") httpStatusCode, err := apiTest.ProjectsHead(*admin, "library") if err != nil { t.Error("Error while search project by proName", err.Error()) @@ -345,7 +345,7 @@ func TestProHead(t *testing.T) { } // ----------------------------case 2 : Response Code=404:Project name does not exist.----------------------------// - fmt.Println("case 2: response code:404,Project name does not exist.") + t.Log("case 2: response code:404,Project name does not exist.") httpStatusCode, err = apiTest.ProjectsHead(*admin, "libra") if err != nil { t.Error("Error while search project by proName", err.Error()) @@ -354,6 +354,24 @@ func TestProHead(t *testing.T) { assert.Equal(int(404), httpStatusCode, "httpStatusCode should be 404") } + t.Log("case 3: response code:401. Project exist with unauthenticated user") + httpStatusCode, err = apiTest.ProjectsHead(*unknownUsr, "library") + if err != nil { + t.Error("Error while search project by proName", err.Error()) + t.Log(err) + } else { + assert.Equal(int(401), httpStatusCode, "httpStatusCode should be 404") + } + + t.Log("case 4: response code:401. Project name does not exist with unauthenticated user") + httpStatusCode, err = apiTest.ProjectsHead(*unknownUsr, "libra") + if err != nil { + t.Error("Error while search project by proName", err.Error()) + t.Log(err) + } else { + assert.Equal(int(401), httpStatusCode, "httpStatusCode should be 404") + } + fmt.Printf("\n") } diff --git a/src/core/controllers/base.go b/src/core/controllers/base.go index 9dd0f18a2..8dab37b03 100644 --- a/src/core/controllers/base.go +++ b/src/core/controllers/base.go @@ -17,7 +17,6 @@ package controllers import ( "bytes" "context" - "github.com/goharbor/harbor/src/core/filter" "html/template" "net" "net/http" @@ -36,6 +35,7 @@ import ( "github.com/goharbor/harbor/src/common/utils/log" "github.com/goharbor/harbor/src/core/auth" "github.com/goharbor/harbor/src/core/config" + "github.com/goharbor/harbor/src/core/filter" ) const userKey = "user" From 8990a621d637f00ff595023af415760055b0fe0f Mon Sep 17 00:00:00 2001 From: cd1989 Date: Fri, 6 Sep 2019 17:48:08 +0800 Subject: [PATCH 007/122] Not use time pointer in model fields Signed-off-by: cd1989 --- src/replication/dao/execution.go | 2 +- src/replication/dao/execution_test.go | 22 +++++++++---------- src/replication/dao/models/execution.go | 22 +++++++++---------- .../operation/execution/execution_test.go | 2 +- src/replication/operation/flow/stage.go | 4 ++-- 5 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/replication/dao/execution.go b/src/replication/dao/execution.go index 1833d7e3e..796dbd403 100644 --- a/src/replication/dao/execution.go +++ b/src/replication/dao/execution.go @@ -228,7 +228,7 @@ func UpdateExecution(execution *models.Execution, props ...string) (int64, error func AddTask(task *models.Task) (int64, error) { o := dao.GetOrmer() now := time.Now() - task.StartTime = &now + task.StartTime = now return o.Insert(task) } diff --git a/src/replication/dao/execution_test.go b/src/replication/dao/execution_test.go index 5d41efb9e..95940dcd1 100644 --- a/src/replication/dao/execution_test.go +++ b/src/replication/dao/execution_test.go @@ -100,7 +100,7 @@ func TestMethodOfTask(t *testing.T) { JobID: "jobID1", Status: "Initialized", StatusRevision: 1, - StartTime: &now, + StartTime: now, } task2 := &models.Task{ ExecutionID: 112200, @@ -110,8 +110,8 @@ func TestMethodOfTask(t *testing.T) { JobID: "jobID2", Status: "Stopped", StatusRevision: 1, - StartTime: &now, - EndTime: &now, + StartTime: now, + EndTime: now, } // test add @@ -146,7 +146,7 @@ func TestMethodOfTask(t *testing.T) { taskNew := &models.Task{ ID: id1, Status: "Failed", - EndTime: &now, + EndTime: now, } n, err := UpdateTask(taskNew, models.TaskPropsName.Status, models.TaskPropsName.EndTime) require.Nil(t, err) @@ -195,8 +195,8 @@ func TestExecutionFill(t *testing.T) { DstResource: "dstResource1", JobID: "jobID1", Status: "Succeed", - StartTime: &now, - EndTime: &et1, + StartTime: now, + EndTime: et1, } task2 := &models.Task{ ID: 20192, @@ -206,8 +206,8 @@ func TestExecutionFill(t *testing.T) { DstResource: "dstResource2", JobID: "jobID2", Status: "Stopped", - StartTime: &now, - EndTime: &et2, + StartTime: now, + EndTime: et2, } AddTask(task1) AddTask(task2) @@ -248,7 +248,7 @@ func TestExecutionFill2(t *testing.T) { JobID: "jobID1", Status: models.TaskStatusInProgress, StatusRevision: 1, - StartTime: &now, + StartTime: now, } task2 := &models.Task{ ID: 20192, @@ -259,8 +259,8 @@ func TestExecutionFill2(t *testing.T) { JobID: "jobID2", Status: "Stopped", StatusRevision: 1, - StartTime: &now, - EndTime: &now, + StartTime: now, + EndTime: now, } taskID1, _ := AddTask(task1) AddTask(task2) diff --git a/src/replication/dao/models/execution.go b/src/replication/dao/models/execution.go index 95c5386ba..d0dbce87f 100644 --- a/src/replication/dao/models/execution.go +++ b/src/replication/dao/models/execution.go @@ -109,17 +109,17 @@ type TaskFieldsName struct { // Task represent the tasks in one execution. type Task struct { - ID int64 `orm:"pk;auto;column(id)" json:"id"` - ExecutionID int64 `orm:"column(execution_id)" json:"execution_id"` - ResourceType string `orm:"column(resource_type)" json:"resource_type"` - SrcResource string `orm:"column(src_resource)" json:"src_resource"` - DstResource string `orm:"column(dst_resource)" json:"dst_resource"` - Operation string `orm:"column(operation)" json:"operation"` - JobID string `orm:"column(job_id)" json:"job_id"` - Status string `orm:"column(status)" json:"status"` - StatusRevision int64 `orm:"column(status_revision)"` - StartTime *time.Time `orm:"column(start_time)" json:"start_time"` - EndTime *time.Time `orm:"column(end_time)" json:"end_time,omitempty"` + ID int64 `orm:"pk;auto;column(id)" json:"id"` + ExecutionID int64 `orm:"column(execution_id)" json:"execution_id"` + ResourceType string `orm:"column(resource_type)" json:"resource_type"` + SrcResource string `orm:"column(src_resource)" json:"src_resource"` + DstResource string `orm:"column(dst_resource)" json:"dst_resource"` + Operation string `orm:"column(operation)" json:"operation"` + JobID string `orm:"column(job_id)" json:"job_id"` + Status string `orm:"column(status)" json:"status"` + StatusRevision int64 `orm:"column(status_revision)"` + StartTime time.Time `orm:"column(start_time)" json:"start_time"` + EndTime time.Time `orm:"column(end_time)" json:"end_time,omitempty"` } // TableName is required by by beego orm to map Execution to table replication_execution diff --git a/src/replication/operation/execution/execution_test.go b/src/replication/operation/execution/execution_test.go index 7262186da..ba1d8f1f8 100644 --- a/src/replication/operation/execution/execution_test.go +++ b/src/replication/operation/execution/execution_test.go @@ -83,7 +83,7 @@ func TestMethodOfTaskManager(t *testing.T) { JobID: "jobID1", Status: "Initialized", StatusRevision: 1, - StartTime: &now, + StartTime: now, } defer func() { diff --git a/src/replication/operation/flow/stage.go b/src/replication/operation/flow/stage.go index 5048662e1..0e49f4820 100644 --- a/src/replication/operation/flow/stage.go +++ b/src/replication/operation/flow/stage.go @@ -285,7 +285,7 @@ func schedule(scheduler scheduler.Scheduler, executionMgr execution.Manager, ite if err = executionMgr.UpdateTask(&models.Task{ ID: result.TaskID, Status: models.TaskStatusFailed, - EndTime: &now, + EndTime: now, }, "Status", "EndTime"); err != nil { log.Errorf("failed to update the task status %d: %v", result.TaskID, err) } @@ -299,7 +299,7 @@ func schedule(scheduler scheduler.Scheduler, executionMgr execution.Manager, ite if err = executionMgr.UpdateTask(&models.Task{ ID: result.TaskID, JobID: result.JobID, - StartTime: &now, + StartTime: now, }, "JobID", "StartTime"); err != nil { log.Errorf("failed to update the task %d: %v", result.TaskID, err) } From 08f15cee2666d367aba57146b00e0a2b31301e02 Mon Sep 17 00:00:00 2001 From: cd1989 Date: Fri, 6 Sep 2019 17:48:54 +0800 Subject: [PATCH 008/122] Handle zero time in UI Signed-off-by: cd1989 --- .../replication-tasks/replication-tasks.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/portal/lib/src/replication/replication-tasks/replication-tasks.component.html b/src/portal/lib/src/replication/replication-tasks/replication-tasks.component.html index 633f020e6..718d51222 100644 --- a/src/portal/lib/src/replication/replication-tasks/replication-tasks.component.html +++ b/src/portal/lib/src/replication/replication-tasks/replication-tasks.component.html @@ -110,7 +110,7 @@ {{t.operation}} {{t.status}} {{t.start_time | date: 'short'}} - {{t.end_time ? (t.end_time | date: 'short') : "-"}} + {{t.end_time && t.end_time != '0001-01-01T00:00:00Z' ? (t.end_time | date: 'short') : "-"}} From f9015abbc4935dfd02392d1d73f841afe06920a1 Mon Sep 17 00:00:00 2001 From: Stuart Clements Date: Fri, 6 Sep 2019 12:39:48 +0200 Subject: [PATCH 009/122] Added new registry providers as replication endpoints --- docs/img/replication-endpoint1.png | Bin 0 -> 33389 bytes docs/img/replication-endpoint2.png | Bin 0 -> 20840 bytes docs/user_guide.md | 45 +++++++++++++++++++++++++---- 3 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 docs/img/replication-endpoint1.png create mode 100644 docs/img/replication-endpoint2.png diff --git a/docs/img/replication-endpoint1.png b/docs/img/replication-endpoint1.png new file mode 100644 index 0000000000000000000000000000000000000000..5219658a343b9ac33bd8e1a2f69675c015f61632 GIT binary patch literal 33389 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 literal 0 HcmV?d00001 diff --git a/docs/img/replication-endpoint2.png b/docs/img/replication-endpoint2.png new file mode 100644 index 0000000000000000000000000000000000000000..e80544464d1731884d6a3dcaed8260d1444be996 GIT binary patch literal 20840 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 TqAK1700000NkvXXu0mjf{;9iN literal 0 HcmV?d00001 diff --git a/docs/user_guide.md b/docs/user_guide.md index c584a07d5..ea720aedd 100644 --- a/docs/user_guide.md +++ b/docs/user_guide.md @@ -149,16 +149,51 @@ You can check one or more members, then click `ACTION`, choose one role to batch ![browse project](img/new_remove_update_member.png) ## Replicating resources -Replication allows users to replicate resources(images/charts) between Harbor and non-Harbor registries in both pull or push mode. Currently, the non-Harbor registries includes Docker Hub, Docker registry, Huawei SWR, and more registries will be supported in future. +Replication allows users to replicate resources (images/charts) between Harbor and non-Harbor registries in both pull or push mode. -Once the system administrator has set a rule, all resources that match the defined [filter](#resource-filter) patterns will be replicated to the destination registry when the [triggering condition](#trigger-mode) is matched. Each resource will start a task to run. If the namespace does not exist on the destination registry, a new namespace will be created automatically. If it already exists and the user configured in policy has no write privilege to it, the process will fail. The member information will not be replicated. +Once the system administrator has set a rule, all resources that match the defined [filter](#resource-filter) patterns will be replicated to the destination registry when the [triggering condition](#trigger-mode) is matched. Each resource will start a task to run. If the namespace does not exist on the destination registry, a new namespace will be created automatically. If it already exists and the user configured in the policy has no write privilege to it, the process will fail. The member information will not be replicated. -There may be a bit of delay during replication based on the situation of the network. If replication task fails, it will be re-scheduled a few minutes later and try 3 times. +There may be a bit of delay during replication based on the situation of the network. If a replication task fails, it will be re-scheduled a few minutes later and try 3 times. -**Note:** Due to API changes, replication between different versions of Harbor may be broken. +**Note:** Due to API changes, replication between different versions of Harbor might not work. + +### Creating replication endpoints + +To replicate image repositories from one instance of Harbor to another Harbor or non-Harbor registry, you first create replication endpoints. + +1. Go to **Registries** and click the **+ New Endpoint** button. + + ![New replication endpoint](img/replication-endpoint1.png) +1. For **Provider**, use the drop-down menu to select the type of registry to set up as a replication endpoint. + + The endpoint can be another Harbor instance, or a non-Harbor registry. Currently, the following non-Harbor registries are supported: + + - Ali Cloud Container Registry + - Helm Hub + - Docker registry + - Huawei SWR + - Azure Container Registry + - AWS Elastic Container Registry + - Docker Hub + - Google Container Registry + + ![Replication providers](img/replication-endpoint2.png) + +1. Enter a suitable name and description for the new replication endpoint. +1. Enter the full URL of the registry to set up as a replication endpoint. + + For example, to replicate to another Harbor instance, enter https://harbor_instance_address:443. The registry must exist before you create the endpoint. +1. Enter the Access ID and Access Secret for the endpoint registry instance. + + Use an account that has the appropriate privileges on that registry, or an account that has write permission on the corresponding project in a Harbor registry. +1. Optionally, select the **Verify Remote Cert** check box. + + Deselect the check box if the remote registry uses a self-signed or untrusted certificate. +1. Click **Test Connection**. +1. When you have successfully tested the connection, click **OK**. ### Creating a replication rule -Login as a system administrator user, click `NEW REPLICATION RULE` under `Administration->Replications` and fill in the necessary fields. You can choose different replication modes, [resource filters](#resource-filter) and [trigger modes](#trigger-mode) according to the different requirements. If there is no endpoint available in the list, follow the instructions in the [Installation Guide](installation_guide.md) to create one. Click `SAVE` to create a replication rule. +Login as a system administrator user, click `NEW REPLICATION RULE` under `Administration->Replications` and fill in the necessary fields. You can choose different replication modes, [resource filters](#resource-filter) and [trigger modes](#trigger-mode) according to the different requirements. If there is no endpoint available in the list, follow the instructions in the [Creating replication endpoints](#creating-replication-endpoints) to create one. Click `SAVE` to create a replication rule. ![browse project](img/create_rule.png) From ef1a22d55d298208d6f8ae317a72ff3ce888188d Mon Sep 17 00:00:00 2001 From: Stuart Clements Date: Fri, 6 Sep 2019 12:42:59 +0200 Subject: [PATCH 010/122] Took better screenshot --- docs/img/replication-endpoint2.png | Bin 20840 -> 20577 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/img/replication-endpoint2.png b/docs/img/replication-endpoint2.png index e80544464d1731884d6a3dcaed8260d1444be996..f2c095bf62e6872d1d6c903d0f6de852f60ca5b5 100644 GIT binary patch literal 20577 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 literal 20840 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 TqAK1700000NkvXXu0mjf{;9iN From ddc602b036c9523f67b4f6a033645ab32ef27886 Mon Sep 17 00:00:00 2001 From: Stuart Clements Date: Fri, 6 Sep 2019 12:45:24 +0200 Subject: [PATCH 011/122] Another screencap --- docs/img/replication-endpoint2.png | Bin 20577 -> 70138 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/img/replication-endpoint2.png b/docs/img/replication-endpoint2.png index f2c095bf62e6872d1d6c903d0f6de852f60ca5b5..55458d59aedfd8aafc6c0277c161845352924aa1 100644 GIT binary patch literal 70138 zcmbTdby$?!7dDJXu>cY27DT!`l;kNI8XA_2G)Nf@?ZGh`+I^nK z{{SOiBCCnOpC@+GnvQ5_&wir*yBEv!j1(Ar24bTn_iv{|-rLIK6dt zGPiX=%Pr`U28J-5fFY2Hqmcv5&Ix8~gNFNr>J>2l6g4hxYv=9&Gc$KW`+?mf2#h}a zJL+I!fV%Xh6U^EKjpqdW3GmAk)GsQwrcSN~4kl<&yBpNy7=IrQb2PFt04{Yvt86NZ z0EQo6 zA2jUjL=1bcD4uMY)YvMW9D0dLtktiidiHtRo@`am0>2-W%r@>CqD%pN`1cr+rf6%#c0KQnii&a6!7;MU1q5Ug26$-8c{}6+ytw!O zd7JzKOhgAVPI`!=S;I@@j~}q~_M}N(C@A`~CC%-^tw>4n?JXrLb)6nneoH=S`9}WH zK8n1)FzqG{W}a$70F_f;Q7+CbQt9aW94E9sxpV3s(tJYV(40;Ag% zSLSDCZ88LOnpq3+I(fRx=Ic7;D;|U8PFqd#p05&79uItw?W=@XT3>9DZx1IHdqU1! z-tmQT`KUsd{H(XX6G)ALZZDe%mz)aKW~=c(n=K2sxx>PxWKsZbmxP3{Xa+Xu8+8_c z{GyV-?UD5O_9o;Ay{A3-@OP}9MyOFkeymP6(fPY|$L z6>lxfu7yb9Cj>8B*=`@nu<|Lf)vRax2SI3ftoxi4B?$J83zk=~2iEuJVUgagpm`)^>5K zG2)Sj2Dv~&F9fg`%5L6umUqaaQ?Ccwml9&W0f7<`cvdQpWf*ZHGmHF8SV!eBkx4BY zx%x?oB(F7NzA+HO;TDO4ro_|ieHWMafaT2n%(S%VEXE7q5o~xK6{HHG$`mI2j!<@C z5my-;EEh(ObQh4f!}!92rPW702CdKj__>vDeWsl!SjnT$Nybj`6Pl2b1Jxq3uZDXs z2}eqM$?*$G+k0)E(@M>FE4Wglr`=%z5kb;Vz>Qdcyn#66^MIy;gE=BDZpJlsLAL!i zT$X&P>*O1IL5!n0NW*jeJoind0G@Y5q-=!BtZ*Tp#(rKIE^1Dv{LSArh>A-)735!c z>W~~C@fhsAfbl5gyNy}Vv2(`;`Gu*6D$)g!S~uz^9c3a{Po=BHa}ml8KN4)d_=@yN zz|>swX%^^4-*@1Ebf7BE3ca?jflJ6J%cYbusXhc_Eu!sem<2h4QE~QDl`9duvIb7T zT&hnR8f~2hum*fS{=!&=ae{%6tJTzy4#qot)Dcn;yAF16fWlEEz;DkG7E9J05vBMX z2Rz7u^ckW2!u-wZ;^bb^?j083&Tt+6>CGMC4k++845Jep*dc&vUopQ=&G6gKwn*)?f<@{>917u;^#Y z18dLz5|<$%GlsF?(a9pHW(GE)6d&&@$fl@24*61o3)&!tlm1*AcwdU18^Y;SQ1V4t zWLs{?IJwe4h~sz6&UZ44XoEW}UIkSh|LeM;|M~kHs&5E-ouDX7957u_b`0oez&rFj z55Oz@Wb47}@*gb>CP;8_5Qu;;F=edDQ=cG2NM!ikzEreJt%%5tyUzZ5 z_OJrRx5=z}MlWTR9azN233M8iA#FoE0UU-jukBgqxsits=x5~_&7z5k2#vs0`w!vf zD0GOwhsa?c1uTx<=^_?D$y8xfw=G1oAV`dY)`>~_d;4UWJKLe`ex=upPPQG$oZB~35 z-u*tENXUsmnU{K3fG-nBU}wW(97JiYXtI@t7*8(gN`T%elQwYmA{8j?fx=;I$usJ6ncT=lyZrnDuz z0L>ankU`W_DlF)z>S#KI91GYc8gF<3gIE{$0=xhxvLJV`=zXHY_M~aDeY-}KshBJT zqShGp#Vjct_EXbzJ+Xy|u!OYFd5fe*txQ1y5=_4!j4P%-x^^6C;D3eFJw9w8LC?pbeT#vK;M$$M&SQ!&!SW>e*u5Xi%vX#~R1e4Vp+cA(tP zgeb9#C|WsC=J!qnvtXR{`cosZE_#6|^}N)qT#NSV4A_}mcyyV*HlpQY%vrJpb(a}J zvC{MG8rH4=H3>7(aq=@4mlCp()>~bdVdzFja$vE3eD1LAn>{B+Q7yE)L7JmEbCS(w zA8hCzvi8QivbGBUijRM*%x65I5f>y+ny2-weC1pnKemRe^wYyn66_KWwq|(_-jkF^ z4b3Eine%!H=cpF><$xXHR}3&L|2Ss_9`5qlgDFuzqjivc)Ck_|B}dDj zNBt5}oUEDL-8byy0>7H_UQ%}tKmzQkoFRY2lIdG*0ekBw4XW~V^Wz+~Xh85fMm(?B zO_R=!FH=p--^MIv?Usa*CVI%Hd<=^$Kv;|7i4j2a^b=t1)n6o#s(9JBAMLwB!xLOz zu{l2<=LF23i7Ody@SG!n17g5f%r28uKTzz{!Tq#i5Q{g1PC%xVzLOCh$lq6fKhTkf zS;h$`Avg?ALx;mKVCx9$Rk5TOP=Pxve%TNaS`BkJQ<;4E_SC2%gTv(;sSNllZ7jPC zmI4RQ=)g!=C=EWmKmcBRnpc>~4pqsbQNc4cN0=q~3#}$$9szzY%r3EE+)Nj3WZcUWL^QAII#cl3O%iQD@aM8u&05g;^(drGAM z?G_!fPh2AGFbejpl%WFWm~bcq#u8AzCD$ zOvAu=onV$!n({sfk^1V}qS&%!my`d*K-p&!>zb!5qK8&og$FU(_KPmbruLrO7!@#c zla9VdU9B40*UoH%=tLz~3w+I>sRDH;LH9 z4lmmVUxih_%)Io^V2`5K+>Lu2^^N{u=Nukp!2i~ScwDWfAcGyAE87)uE^M4^mb`{Q zXa;_X!iY2$R;o^fFZ<>MN!xW2@$o3A#AX!=cgo|`AS}+B?n&wdc{wvl7$hQ$4_qbM z4+F8WG_$Ky0ArP}6U7R~C+8pIcXcwfY?YpWGWX>PyJI}L7iNLAF z!Ssq;0UQcoRf*1(ypNqa5d|>`)~hv$ zmSIp~4a;t{YnNHp3M|MK`=vD)t1JmKB|V>0KUcW%n8jMKAtJ4j%uB+uO!8>vJYcI4 z>k>XCs)5so$qiDbB^yt1hI=G*tv zE4_68hRaX+4@+Fl6#wp-?s^3IilKdV?&a|m(Snz5F%9*)o{A2;hu#aU8GL0#7`Fl# zFV22Yl!s7EI-^HPHSWGIN-&`DN_17{=AQMa_r?E+1A*iXCcOxF%3pamcBstQu6+$O zF@LJU+3aaxMfz$rkd!K**r)PKhNWhEd~R_Uk)wh*Sc53XK8`ri)LLF)c69Xtc(NR( z?{uE{nR?#T@NC=7M8oxl(+JJsZOj9(L)GN-AHV4DusE_BF3m?zfp&*Q>E(Qg2#t); z(2ZMH#axeoR6LE7ET(*ca|YY|tvi`ueb~WBDrB8vVvpe;4Qw=%wB2Mpb?sdIQL#qg z_Sf^n7aQN6P#HzGF))N_0#4y5F*D?xIufwevp+kG_Gh(qNtLB1~_4Hm9gPdYMlytm}ygdgflYZtP&` z$FOxqoY%0p!r>C!ZmLDKXdEAfdS83md_AjFch!EUjxI-1xo%8zpytqMF{-e=M)chRKOu9mC5SQL|HAjGqy2(I(xmnjwQ zVM~*koNB!1$o9@4jK(D4T|y?KJa}U2yA=c+vjnd~ITo22j25pQ6Y98ZVGvScxuU1O zPXSfnI6&$=?&n+xTaieW+>fOVQ|TBWAAT+-+uA#HhsEL&oExHvc-1>lo@oS6*v)cl z#w<}VBL)f$JV|gAPu53_!8DN^#*l2wRG@gBe3FR{6%u>QATvH9+e{FJsQ|%yo#sxQ zt=Y^O5^l1d(DF6cQk!Xj&61|RN=opJf_NyQqG-0)FMGNmxYo3vwMT`f(+{KiO{$NZ zft}%9Q>7k*4`UcY1s@4zLsKDn8X(T#EP_hL_Wk}prKJhlF0O(g5OrvdsbKzDhu`w% zby=0;_IsL=ZvvjiP#q2bI7+QtT^AOI{1}YB0C;W0xTAs*ob)-^AU)FoC<*w3qvQ>K=sJ924Uuc@Qh353 zgn_X~MwPw!AaX@RqJuUw?0~*EjwB`Vn`ZL&3K&0}^|eXz#a^7o(QtWKrjZ0}46s9| zXs?^Bu&gqVa!5FYVIt){mdlE%&S7SienMP^9K%A)Nv(ya!4E*a)fkb8b+LEy+G8FR z8#em>Y14Pon`v(uZ3eSe zkA=%}G}hZXJdAayc%v}=eM1|F{-@o9eKKc}XO$JX@zC0(PZ-JtZyM2*d|_#Iw!;Ie z;=^A#)jz&0Y>H6_kEy=aE22vyevy+9Gc;1}W1Zt8_mB`PWF?gA#8PcZ4vWQ&pf|!p zLzs|nAyW_A-G=-n)jm@IIEvLx?MY^mZ%285r&A6B`mHEA9EvIcq^>`Q58q*-S`?NmA@u#J5H~V7YQ*tJrV-F% znr7Es_Ui(m=W&$`mo1{J%??pqqTKO9c-&;A8hhnt+XudhVe=Gmy75{|M`zI-AYu(C z`TfPd_*B!$scLIyGEKKpHHlD|DWxz(xC~9Z2GqNVZlwB9uVrqwLpMkXO4}+=wtW2Xmm++n@##*)Ri2Yz#fk_yzZ=6n&^f{RNHNI8rzz8nWwPqkNc`W%0 zgXHn9A*CPVRS&b)Y-}zD-KzgR*f?Is5IZZZZE@VvX&N6C5-tEf4$swyGa~7` z)RHHs^!GN95m#XaCP%YUfVGp7H!f;@lJ8f#!@{}M`V3r3`U32epT@yE{6rO!8?QrU zlC=;~krnFrN2A7?C@k{%P(;*G{6T;MUt$n4biT&!KtYw;7S zgTp=9uisK$dR*@IaHM3aIqj2*{hFLHx3F$@iKWx-9>B5xt4bQU7fMso^^k^f-0mw~sQe{Qrig3&ZyLl;jU<-w`a;gZISFnUd_j^D<6cxltjS^eBTF_tWE@wdsi z3-hbaQ~7b*HSK(D4ZUH2ixSPy8pEC7Bwply8Zsd zqI|i&`qRFFbZw^}*{Mt)t&aUBb%V}3QQ-ivi!3RTJ)klMS5Hgpi?oU^@|IcI6iX{8 zk23k&g^pwHuz*$&{cp!j|B#Z}JGu{8J6(EJCDG+-`g8*_l8)putoErs-p78R3*&X>$f|% z5>=M{psO?C^YQtkXJkPOZmUq#^3f(Lp4%HFb>6qG)^UNl?)`7DT@u$0$KD`x^^sQp z0m1C;>mm&-kj{kHugbsovA+Oj==}1R3DERapa10_R6pe3p8*PR`mXKiTJ3zbN+i_l z_I-~25irjI)zV+co1|aPx5T}Vxi!zmryvY%3DL20-#M4FJHKdXJiT3bQ%G5_4O$b9 z`wx6E%=+6qiiClcXyHkK@l0}S|1Jlu`(L-)FaO_{T7nE8b=qwHvv^xuN@u5H-M-I% zBMRwLfTBTtlF>eDSXAS~>6se??%am%eUSk1GvA;2TZ{>ykN=H6s4X#K{l)t8Tm``B z*7kD`(&5AeSwnmMgVe5=DP;m{Fu%AD#Qz_%Y&nGnTv7%i!OWE$*xm8 zE-daXxRRXwik<-LpNT%>DPg;GnOJBo6M;~HS)a$JG+`qCTE!%KOj6#zXch5BeTBn7 zF>Ur0tKha&lmUu(>pWMB#i##7z~Dv?U#zIzVKEt?T)j#nhm}6@j#Dn0`4!dJ>81H{ z<%QW(p|px_p|Qs2)N;zQT&zL29;xpX$V|eGN6p&gQMJS&rB?<12A->gKP!VD4*lFN z93_if)x=WgsAbe1iT^{XvDaEQ@~B+xjU7Tl96T zimO|w;jSby%qvN}0TmnXdrLKE{q9wWjOK0%n&e2Oh^wSHm6HBV2zFwj$Vb=}3zrqr zSzo&iBGL&7^~Kk8%Q=xL+YeyHW$CZff7ZLy4j*_L$bKUZ*Jh5DO)WpfRHJa#-g4>3 zo)43*lncmIXAxMx{4sY9`*NjUc!z~j;qgVZ`^lWqC-XgHt;j>IUbPPFDBuPRn`R~g zj5xvB9g^N_7hj`omz{xzS&A-O525~vwcPu)Jt^}0=_14H=-_u#Jg&#)$CVeP<-@7E z+9Q=L?gJ@XE|=BO+US)U2t25F@P-u=&tHyK)Pk`iM``5=H|GB#a}8X3(d(ed{oHe2@)qU=$KCFrg zl=oDCKk&vp$B;|RneL>+c0Szi6LH>=rb5U<;q_~s{-08fyHf34*$+C+UH1QFD(ez* z#T3rslobA&lI&#>60bh|rHY4VYh!deXZ%9FmJt*sl`=^?zRbI3lRf`J!mws(Bf!C= zGo%Y<>rf-Jq|*1DpXoTS%lx?MT5^3%NuYk6EVzY-BqA~TQBIn0lcH$3A%&&NUpEVE z($RVU`KNfJxGL}GGc0?@{dZD@X)aw=mFWYV!x#%W$;ugHe@tISSj9DOHcNhoxUl&I zuB*DHDKC9)e_;t!1^$ZCdu}tHcUS~Cz?#jU!L_oBQy?2eH!sTIIk`UT+v{CtaaE$; zMUe!qsWqPLvoCNWEg&vwf`0;sKOfH-FAehETAA^*;&GAv(DtEfQjf=A!o{~IjnkOr z7Wsx)5rI7n<5O1fjT7}Ud>>cZtRc5v@@oU0t|Jb|)mP$=S=DD?Je;LkYy}ooc0(z^ z@re8iRRvhRMlQ@JkC1KRP03%8(o{ipE*)~u|3W{VvuRZ(lJ>2wsYgw`#r8zFPda|a zY*(2_vu4eXifi3J3J?EiG(&=|tGoc`H7QVy6w4bwsWl)|jhzVYeqwqIatzTIw23`pbN8dLhp1x)Q z>AXKO-@LIl>U?z6GQofw`{7SD?8S>*`@%`gc&{k=2jH*Y785}eSYnaNnix^uBrELFmx_H6`ywj14TY@HrMg;R_tkJcZ3sZlCYl2|l)j#Z7 zHR_Zn+&8-;V2Gb%;M((}77(WUj9pKOEGS>M=ul-oy>y;_sjUNoRmoprxs#AHx>@FJ zhbXNo&Pwm8pEt6d!|BM)MS)b5-L@sJQaa5JUCTRMePvULw0^egqF$WZ`8|jxq+~Sb z(R-{6{Pqr!UQyvmov)i;x5l_F%4_nJU?Cf$+!jha9$piz)QKW>hPk;*&umBAEkHg_ zn8g>Ci(|m?qgxHGv8p(jT{Zb+Omx>HE9viv4($XR{IVb8$*IEJlji7hzOTu=e=0?DCZ+rt z#n*M#QPJ`0EiGPN}$fj1iByYf5wh;@{F)Qw@?7qhIt_zO;#oe=z zHAsi+cJg-uOq>dm=ufnyETXz~LyM~`^Nb;x8|QP=5MhQj3Y&*g+nf?y7}=TLVLYll zu2wBj_sR@6cI2vZv2OWjtm{LKU@f8~`bUr8*!_YzYP}!yjO+O;xZL&!GUy~~jHE^d z*2h2JpKR*5!=ht)a&3(j;*!G2-yE+wN?u#qc|Tvg(URwfax)iq*NfQ`|Btb>io{Gm zKgAcUCwF^9UtmifPq^hTlK4}~Z1cg*r1SWX=RPU$VSwt{2~sPz^YlX?Dc>JmkY1#9 zxom&;luCi_r#qkSI&E&gv2KBkkNou;{si{XeMB5xDgUZ-ZAwCVFL&M?KGgF%bVH4i zFMG8jn~OS1I5@LUz9r9yp7}l<<7mE8jOQZ~6@`Qxqs){0{P3`p}iALYgP9phS5( zU1loC@~hM44vRQzB#^__oRJ0yfg|Wqmijs*S$W!m=b3OMq#OQNFr)lnB(Z#~toz40 zgXc)@{ZEgmYoxQ-AN$k1>dg&PpMC|tA-Z)ZIx2XA&7@N|HC9cpVx_?A80hQhAYSTu z&i2IK<+Ju_2}w=sB5uTZ8{H0hE5z4b5CXU~V7%$sGkVA_OC?SM?a z@o7&dr62N_F5?kgop`Mbu}`H0Ke`QVl=*|C;Ryxm4xgPGaI1&;rv?x1?^X?OgL1#f zbCLHm5v@)K7=5cU5<=AH0JyEhAb3vSzDxei;2GkRGr4`vHOvrc%3mR*#(<||)(Np! zb%f~s*URb7)6})zyYEK>eyexPr^-=RtWu{n?~1Iq84=CZp4DV@AIr?)EUmfV=H;18 zPT2+$xp_e;S3GfcaD9Ms<+P1!&F~f=N62#c!6#4A9h)a3ivI?K`_5E?wX{RN*z93);jC=ecodqMp{y2MfF7W6mn@Pb1`2bX)9IddRpx7vsIRpZ(u-yhIVbl zvU=wiD3M2-jVET;mmL#VKJTj4xsZN7!#<*Kree%Ss7KAx9lI53t2!4j9Xmld;M z9Rn$HoClsbk*3FzMG$cPk;Y7#zOt5^jY9Efs(Koc$`HDwC=* zz*E*{jRMu*D4%yatk@jT5Evgn;>P9Dk;3w{rzWet(Mg~s#yKMSnUwpoy2JjfzSd%a-%hzl^FFDLjTmlSwHB7M*TEs>C%i zo)2o-qinsMn6_3u;bNkg^SVq=le@l}kvU?ZNxtRLVM-CKYjoGBB=2y*`b;l(N&mPd z=CI{-O{kkzmK`OnnkwL0u^j!nC3Xt4=F~QMqw5hewAAey)jGPS7k2(j@VJ>ycKoM) zU$oDfj1x}p(e-lRWnTML$@6iC1Q-$kUW6kJDnB=O-6d29@C3uJw8=EX*LBNO0yf+Aa3658*foUd~ z4|}6-!x*RN{3Cs(Eo43&seo0w`rV*(u#2Sh86!ALHiME=2`=NJmYeEoBb7!vYO0 ziDp|~(PjS9g`mQ-nCSS|cMqUL=dO^e<7)@(l8~b=_=)XN1V=CH=;qM=XTwAlgg`3= z__LVFk0SFt2tqsigLhZC#0BcXfc2K=gDGJFegd1tgCLz&c8~g3ZJ`%!(ec0EcyK=P z0F&kXB*Rz1y{*6%Wq}ibseE-9F1cG-bZ&To3^12Y2{72iEn}Aoy{dW+SMQ&c>1vo15i#^%OX!NiZ`^0|*^OKj`eTPhRDweeT`;YG`-DLKj zp#mrqGeR6hw^;MPN?$QH3j7}yt^cQP&V%Lof10Ac#UxEX09J+1-j1sKivoa4o50^< zlx3+vH`~hiBot#OJKrkNg)(W5%B>=za zE6%tlnP|qD*!o@|^^Qy8CoAeFKLdre##^Gm*~?|Vn?1@K@G!T+@IX9gq zlpdnJ#|^he`Y*k>H}?(IU;*9t7YBBuXnsnFHAe$9+us{Nb$(sNbt1No<_$Ep@LZ~TRf2WvlGoTmh z+bl=i9&*=fqY9mJi3ZtOzC3Nn>sp?m!MNuSF!@+K~|KY88x1ta)(lJ$9VF5H@t z+M@hHZzBmsnHE)lS`^6V3qSmGTjVVeax%kZ$Su}imEK{+7UhCGJoplW9+J#-GD9|% zd83Ge4S(bT>y%m^4;NSIvcK)ytca?H9c0DymdinHO#xwO8xMut#}u2cP1$;LcIy2p z{ffb@W5YaS+P6(IOd}QrvY^z3{+`2-_^imJHlI>$t!D+&O*}EyS<2^yVTE^s-Sj;;3#sy%wWH1YF%=gZPSU^jc>s z8J1`%8fQa9)54xWiP?2ul-iU;Fc;AkB(--r1k%K#SksCZV@zC%V>B{)9qLA8o2KhJ z@#2BZZSPVeqHdgfM+%zy+)xDi0}20wQ33?rEnj%L#7fSFCYdC_VgCNr>PZf*F0Uxu zPV$xO^$F|k;K<}YW^FU!aKpYIQD&Uf!}cS;c6zy$yH!DCuMMwrh0S?u5=^xMWrf3o z6PTdHxA}p8#tGUV-vl*H6V}L|n5>PVkr}(3!W{{ERgg*V&azbQlqJ`EHV2gfAyo2n z>s{y`D+7r&|Bw)C2&4RI`R})6fg#&5-Li!V{cVsGWeJzsw|GCJ7y`9fwdlr8ZrO|f z-gm_M#r6ImL-@kcNMZ@IWeR$N5`WfC8x&)-K#{rHrNDv!VH7}x&7Sox!S~PMjzL zBeH+*;5$olS4L!F&wRG>>=CvY@fpE7?$?WrQhq8^oATM$1Qp=y{T0^j8nx5UT8k(_ z0xMv=00RwrJhBeWe(42a2_eQbsyi(Bl6s4ai!+>aqG*CM&8@7gpln7=lO*?J$3Mbc ziVZ1ekAl#`^WrFxHCtGw~4ds^a$dDP*S&K-3ugFt6PLPN%IOe$gGv*ELm7 z)Y?!DA^ue6Zcc^LX`2&|dLMfRg<%AWRA7k}NNWa@28UjfMWy7_)MH`W-IvJ+x`l)t z_Swplija7zM)T)rVL_Y*gHC*!Tbb$zwRfPH7dXM7(;8klMKy9PrZ>Nqmy65sY$;yP z_v+|MqLlD)>u$|P!9|bR8^>f)UN@JDUz28OS0Avw^lz@ONL|-WOV8HT8_#jmPCv#t zEY(M3WzR%6Y!uY8Vzx#mQ)L!;++nf7m3G$iIHF==$LFM0j;;PsPVao^AvtgoT|b4$ zXvv{kw{T~w+Hs{X<;bI6hjm4yrlvqWZ&Wd-G}V{h8p#^p{r0)Mfbr{foFZOtn_GIYV*MPP~9@C~1;~kbsO*@gvaC4LpnSwLsm;xs?PJ5>D zdbsaC7vn~b2b^B0KZF|rso$V9T!ez)DZ6xW#qlRShKkBG=s2DbO=c*=r zTRpG6wg}Pd)46t++AD;5y@j=-H*~yyH8a%b0y!%QE=vr=I-lP0ab5V#w>?>!qrt3e z--drO<){>A;@_%As3b-pHs!ffU+A^O6xwE(ujYA_r+0N!=qnO#M19_C>*F}%z9MpS z)_>E^*8naYe?<55IHJs3;Xf>feb4dLbq3A3-<%IdG@SL?QV61Ztdf>LJZoB$%(B0^ zI$7zRDK+a?;G5E_X3T#W=OG)qH5bAFjsWpG66p_mu#PSj1y3sq4zU0A@c-6+U{N{H} z2LI17*_*2!-y2lq z&ShNh++6SE=A_ol`C*KWZHi?Sod+IG``%o|>w2s$E-r3W&R!3QV_z-lT`vLQd=(kt zWt`x~mVG(ydo^AO*c=tn{@8E6<_x&jZ$SBGy&TCp%z%IWP=7Mx*)MWZxA>aP{cuo< zP${UlWOGd0_G%Xh`ar(AKMRyMKxulFC3>EvcR5ekcs^Q4kWBBJrMn*$pX~A*X6dO! zK(@7AyK_AN;0@=iU(5JJQL|Nnr0`hH00?tbNqFz)oDH_{ZWBPZGrr)% zI)rA5ulZ2&nU|!d`d$TXy%uQ|sH4oH{00W8D_LMU5^nYQJ@-?lSJ-6DJtl5N*!%i; zPltQ8i>c6SF;dE=;cPiaWDDkbys2qXdH>O~x{K+ZhU@bU)S6ZT{7^*H`8wWf+cE6| zfY0kRLK^dDicHoj6{%+;Fj7d%53zp`ze(xj>obeLR_y zY_whuoaVUI7Yc5k0{kp9l=U32?L=C(<8p$TEmJK+pM z!nrC=9uvzE-WmBs_|;_Em1eze=Kd3-4)`Al;5#P_t7@(sXp{Rch8=i9E0 z7fWouXZzi3>JaBxtXG+ZK1X>#tv+U{dyv>Hzy*itdTx~qxo+#M>xcz0cN55$7F*Y9 z=!`PX!C^CYtyuo0!O!*yL~_N)(x>ABR|o9h!gT3Vl*(lw#|J1kCoeb4UCcpdbL zt7B@t8*=XmC%1L))_yoU6C4~2gr9=w)tZt}iekeO;FmQk?&CU+3aPdiY+L!Z-W&61 zXFqY3E`h$o9#`sKSo3ETPx6fG9I)N&vz=M)dEcbnoTbeIam;e6X`blP3;br+jP5#R zFZHI$vv`ynD1qld28qjaqJ?zT(N}rAP4;T+BlzobDP**?v^D@Q+X6TNK^q@9X1DGn zD0Q-37;jywy=xlDy%5*HTviAJYI)APbIskXwN~bY^P}o| zB0@q*G*57#fH?p@8@ax^I56X~mhQU4Lga8joXuk}G^B05jZn{Pr~YI)_B+aFQ7r9w zvJGvJ!SG;)K&Ao4AZ*wTi10bg+VNTuIv^|W3JfqfU5r*@{o0JIY5wvg$xa#RVUBN^Vb9Z}32VsoIHn8Sy?$(Me*SZDr zaUh;iAl3pJGfIxNdNE4w&2e!=iqH94ccm{eKz5-!zzlj<>*^?m$&NXh^}PXnyw-BO zfQQnKsp(P!*rEpJc+tJ^1hFt9?-8&a^rY~5z3>@@up5v(a@N4z)Un-5&{`LAemi}0 zLO^K&o#``rHDm=_-EIpYG3aEXfW&$qC5-p)m6@fw!x#83j<*UW7pd>Cu;eDe7QNiX z&^v9xM{-RVRRhzbG(d#N@r2)!o%$quhyC&96mcn*ePRel$;5>lZV_flaaM&jW;t!$@brz=Esw(hoCpH5r7Z#r&$A&68 zUqJEz#?`2Ed?PQYbb*VDo3CcMYIBwvAZB2V-VSVi?kCW1wCf3p`@O63Z7OmC5PY-O zTeChu{@hT9b;ZhNqfoU3sCmxsU%6_434omc2bFC9vI+orosVs?MjfDAw*ei40=ms` zuZOE&M;tk`7w*bTBwODV_`3ar<{cKf2#-;Sx;G$lDVPH!K+0V}7LfyhAyk_UOA&Hy zI085lP(j$_f=)l!42nbmKJTVy+PIf@W za~qSi$oXm(_M6i=Klk6tU5_Z-(v@=;aZbXx`uKtD)Br%qrt3(L*;)%Y1(0ul15W>4 z4<$ydU_{?B?RwgwMqNr2X`dfhr^PU3<0T((<6rVKlRCwOvNfCnkvLsDdu7vq@Nk2@ zejQQ>WZQ<=!fVcnS$+Y5vlJkZV+*}Z8h;JU)O&Vxbf9EfpuvP5O(4hdC*RXgK(Qx9 zOGih5*}!mz1xjy1)M#|)0CjVTV*Lp3O(Rr3J|A^epDa26%)g#j*Z?^948U29^Z13| zRT+V}0gA;FY#{Xk;o^-dA_lm&fpRjKF0~2>fQM!wiV6zusp_op2ek+UtxSn({#>^3 z0&)LDt?Le|hI>TmWoHgSe0Bk9Z{KCEwCaU$p@*}4vw*nRx$)Tx+C~*=2WdB#Kvw7D ze|ZVS@ftahe_FBl7Mn+%rz`80SWqeEWOH&@k2@%+gt-=Y0!nNO?bJD@h>Rw}(cc#J z2%;RUXcTo$tgXs2tkC2rA>Yyms&jPen>5b7_1m&ASRl#$4vVW!C7*pDCsNvaB9Z4v zAm_fh{DZCM*vo^8S)le9L&1U4->8VLS_qFvk)h{g_jzRhK^;n`^3Av{c+MQ80y+2^ zrw?f4vt#Z6r6-`q%-&khj8<-01CK^U3o0X^^7X#|j}n7Kc>O`jj_^Vl7eM`SmIc*; zL5R_H=W*x>P@^aT1y{c^&Iu|D0=fv;@BvDYC-i&4VTpgE04O)69lBYrAa(#|P7sLb zS*KFNw)0I|y=O$!w;wwlH@O%2dFO&6TD!Uxey{t66tX^+42A*1kEKnmGhg%J%PaOM!cJ21I}ZZyfK; z>M_RJ0D{m&_ulM@C*h++M|cD$~j*#+R9Cr$UUbzG;NQH32KS`YeM8@RL!mVp-0PbaS=_ckV7 z4u1aAF7*b^jqGHG_-@oo8IyQuoWj4(7JY9nHc?Ro+&-Qa@up@dWKS6AM2%C5`qT}Y zk64sPMn-De)|aa?vhZTz<3OE9ArWuRSCKQv6{uuV=+?%Bl2xc46DlB6MLgjPHO^l*E=ju>TR2=_5l97K~)Mim4Jn=fN!VB+3RC~eJ=(h ze9BxokX8XRsPIJT%G#Nu0-!Qp@u$3;0}8TJlmJEP_K@|8bQF7r3vE{cMNnbQI--Np z*Xt}Eb#9yYsq0qxxQ!Dzn%cdw8-4|q{3-*o4s1Z(NUEC&Vff80C)xHrJTExNkdl-H z(5U=>2zv{tD7(0OlvhPXL}`#vy1P>Z2b6Z`mhO;lRFp1h7)t5x?jC7j=%Kq2kOsYH zd_Ugr-gW$5_Gm`48qpRHXxzcYxb8o3!{Jw76xk zx&bJtEA=dU^t>cH| zkDQWdXjbWCma|b(WM6Nva6#ID{mjk-k>qp4|Gq-2==t?81S%eS>h-g&<+7m#6$REl zAG`0na0!BVO|z6^a4-Bm2g@v|!-xn7)IJXY#U3<`_XW?Eq@ehcku=g#G({eZpo=J3 zr}G;`pQj-II0cJM14yNPK%$lAI_D1X(?->A{*16+kJPJzI0P(P(SOb&{_RhWtl7jtN_uD`^q9vF*O#7CQ6Ti#~=R92gV zVFbw1`UM>tI%r?V$U~B_1exRe{0(CIOj6g?g{IcZ{RSr|6Y$u?UhYhRP8W+%kgw3< z-VGL;4v50=$*Nr!GiP1 z8uMSr>{Y>=BNn(NP^)N7#?5wV1Zym`|M+-aO%2rMPzQ^NYR7A6XuA1@3BF_#rV5)Z zz8fPBbW##;{YmDjQN`8&G#DKVO__^X`ofnhkv5uf9UP(Q3~56pxu07dm2qhW!z9>W z|C*~-B6P9IA?@t!%QqRQBv9o0vc@8~Q%kvQEc*64#>ZL9OU{ERC<6)ZtC-p_*h{sn zOpI^b<4(K<-`%T;vS{+vC`%sjFk|6_)Vnm0c7`s~@|vyjFuHWZ*l;36HMsR|uuvv- zq$yB}`Xn_#SzryFaKUZT8M#B~8IHh8r!h&+g}KY(2|idi9W{5!u*G$mt|rY6#Utpb zd?@JolS36cS23$eFsql&V97&Lr!&a0R{aeS?1qkHvT(E6{x(NHtZEFX>4Y!$u9hbjm$MWK$|YLeXg4ao zaVK2@x)PnOX)JoeQR~|wUSb3U@)P)!2S_ZWB2k|J?E%TLDL*d0?u0QRG=>wj$p5Wh zxWKBiClJ27RoaVkk_|^p^~cgtnHE|(h(vA&9On5Y0)L4 z_SphVk7cJ@tR*Ze!xSxs7(+w7AEbx3k zz^IvU{zUPeO1rO|B{zW%llFM{6gM()7M|KD{&r4@5apEW{_MCL2lwC~H^~bZn z6eTn@OJ|808fj~!8h(}ri-N1d;F7jHB9P(!t<-g*2)i6Q7_QO0y%!Z#w^_789&<{g zTNmL&J@h6ORf!>I-Fce{-65v_2TMHUP-R_-tV@h{xdGk2To zwe4a;{^wH_+O|H|4w!PM4V{K37EWwSM==CPp)*Z2iib&Mfc;NHVxf)^r|TmU`Q}N3 zPa$bK#cQ&<)Mwk8uU0!9KcUNNin7QHijT`_axW_s%^i2BAmWH?ll^_?2U9v6^PNW0X_W{T6FteMvGU(=5en1FWV#j7$gmhh2$QsoEiF~H^PpkO z@63se$1af;!8ssP#CHqF>+5YasOpq0e=%!Y5X*3j)&QFh;axCvax*U`TwS_T&tfN7 z`U+~2@XGR~b#Twb+Zo**=O!1q;f9aJ|DG9ITqTT~>68iofiJ}!@gJ6;u@4%9z7+Tm z{Lt~}n@Mr=U_u4V#b3>-vQkMosD>G09fH5yO{#n2&z}AaAN38VBv~a z(UF=8j`bHv;JS$?uwWa6)EVj#Xl&H!bv`+t=|B1uZH!;3RA>HLdZAwLdrzHV*4N^( zhH`>;WHseMwf`>f+3!%P?`Av~Cnu*_@^12Gb~#3zdSfVdYdP!mD}9?z`+j0s1n-Vq z=^(L@bkt{q1ezXHO=EZryk4Vh{-S6e_l|g+i8!{*sOsts7Vm~IO0j;53>{tdOspo_ zISVnx%VY_jUWg2t{bN%wMwKq{t(CaL70ddubksXC*YZt7HAS}uUoGfxfVJ@ht9TR* zP#tL!O5)U{pdnvI(b$ufY;=2$buY0IYAd=bbQ57&lUl$ApLjj`i)w)a_Gjzo)2qVK zue@(1r|*u6fzm73H@USpoA@Pk{zZP04*N!)!}k&UU%?bwHOA*!H0|4TLSPHmcy>0R zD_NV6)RuU{M)4nO=@unW3ZV{by!-zNu(0{-Z=oR*_b&~I*%IaAOhC)&+w;HALXt}8 z9Ac+_xxwN?)zam2qkbOw@MVRlP|mf>=Kae+hrj46;0ZC^E{x>>mO`TLz*vh6o|j*r z+zqxMa0m#3GqW=9IdhThiHoZ}j*R4_haK04Er6lv$4c&&MV7gYR?u2Ugv&X_YbDV- zlV&WZ1O_tLlNx1EXJGMbHdxvU+PfMW8)q(N(JOYh+cuDLQBgfW=J-?~v=v65lGpGU%@pnssP)rI=Qcc9#Q12L$n0GCs=*9d3G%IH_Q>27v)aI4J zxg~{Vu6K?eWm7Y+HLxi=Oe=jtb8niQkB<&yz-auy-|LMouYt_BrL|w^hWKr+h2LO- z@7C61G{bY!;L`{pYkb(W`dY23U7Dk&YD}HUFegxZmIRGuXZa|QrVda>jvWRx)~43p)849@wLbH>O7sT$4YvA zM3uRkRt-?5t+nnka!{NY^)pDwW;6<27J%w3H|RjQV_cBO@|vrGO7q7FYAWvOlQz6a zy?y~`U;G2uiy-Z1rz^f>)h~;bzK+-CsP-AU&O8cgzYt(nuT^91SM95R0fBlJrmjs0 zue?U^1QXi&gRm5Pobf@#i~~d44OL~pTb4~&PB+=ToP3%`FU59Tzo=4PDq4_yva#|}V`aLi=kx~? zp%W+8bWt2>CL)X0wrP$w{o-{@NnGq#&OM8V!Dn^!!>? zIlI9kQaNd>m&`?%t1m0@uJ%-60)IJqe&3!uF)O7?8)|xcJ zX?985&}TwEHo17yAJ=uJ>+-4M+s1#C2dnQ;ax-6hyVI6y+e&cTy?jsmYIk~+xR_$8 zFxB{|kCIBJ$+RiOeAV)OmG$>qijc<4#MQ0V7jN|*XtVNDiZc`NQWgDpyJhn^B00#P zT_g76$6#8w}OdWjw!(^bmv(zsxFp#lMhCT(T{~>Fw%$@&2te z#3AbBB;A|Me_Zp)ja5Z(>W@ z&#Eyj;H$2}blJyaTf^K%OC0e1pUU2E|u3N>1ZZ&)~S96SdL9-!*gF`D`W8%qqklqRLadAcEHVGao!@zA4+AHp;B?t`w@fHQX6hsrMdF9t@ru(-*SSv1iyU^Ro?{Ee9?4-Fwb#>HNLA>t}HcATB57 zebv;1HKW4*^GPTUs~as*ZL?)FY$98@&;g${*;33(=Sz(=f^wto~yKly}E?# z1%}fH63VdoFGx?cHU{*QsSZ6hg@xl6w7_aB-yb+wPIW6&dA4a!6Upz6`+g z{1x>2PW+Oa4RAm{lWid~gixt%@G&eQyEPpmHf5s@A+;&Qj?lyPqT~yT#N>QVi8KH4#_-zc=NnK}<_kB11VUwTvkvXcBF^lk!SsG_To&VXcKPHUY_)V3g(T+V3CbqNoP5midqloHDaTx zO{gXJK=pEVLkO+VcPD81;=ZrG;7|~9x7tLrkHxX46NEjRD_=s(1j0csynF__@mdYH zLFn)c#&~*zMPVd!Nuv^&8F7+OkrV-&qW6yLMxoG^&#FijVxlLJ#R*{V$g=!3HFSC z<3c@)QM#`AhTJc&8Yv>+r7-<;BUmEKg9HVwNSxSO|ZOHI$he zOa##&5?XFCCFixDylxWqjD|iPy(;sF+Go!{%ltJ7p|q`Tb;?0NRaLP+vvB+ri3k)* z31{hxauPbSttdqT@sLa-gH?87bVc?o&(7rklmYq`eIh>(YJ63REj4LiQD?J|Sejym zM?8V|*la>V*KSSX10 zf?(k_v%2gpC~j>u^NX_9;s&K}I@=qSoA^BQ;LhXr4QflQ+{zHD|s3P%Dg&UZ~Q6Ni$bw)_p0 z%VS=3xfqa6stMbwrUd(RQv%HT*9M-bxalCWR>ZuAr=&mZx&7pQGPpe?bUj08hr4nh@`i(+w6S@_RB- zpO?|Y0|VoE$mf|+1LW}QY9?~HHKaUK#4k~&vH5I+nb9C)(}a~eQc4x#2N>KyBjFHA_cjXcZnep_)qrLhAEyLchsolM} zl#$Vx-+PumFcM7aZ@^cia>5n9Y`tPb>>r$NjC4=kcM|e9NR~Kngef-^1z|vW9sKDq z$#Aj^63!ND?M~@pK7W2qK_!`L!4c;iT`73JVh^)7QWKSc)h(^3g(6gtw11*w2V-=Sg{@`K!9LHX|nYAGZ( zrt&K0^HJX@$06>T_LY$o#B4Ocyy9~$B8sNWCTZPWGtNErvF}&J=E~7|mf8lc+s8Fl zRu~85j2yK{tzQx=5`C4%%#N7^Yx{>%(r@op{TYR_V8RS}TNV#e3#e?AO zyPEW}|__`^LVv68in_`T?;7CiZ4JXZsf#|}Kdw41~ao9DW zvT~|K_*qjv6Twa^%|sXy65CoJC|aI0%doAPDwS&EnQvnJxKSc!^~_!d(z(R2Ci#&X zmq!^(t2#|??Hvd@HNS3jR@m_OpU^;KUdvW8plXAyPhN5y((P9#e~J7W&vbX9C?aAU z=98R#bU{4$zuQzjY7gngi~LH=MA~UrJoGo7!Or02Z2Wd5{{J0}Cb5ToAv{FiLDLGK!8kGAS zceTJock(+o+GH^Y;lHP5GV&wBT|NnE-gl)oK$)RKPMo{)J+CUm+H=ymhb5jz`hRkj z5$yR}g;v#zEwJ^sKLF0TAPI$KLtXpv(M2KczKHbtB}|4_2ER+o+3 zO&Gvkq6=lbm8Sf8F*{9NQWmG;E|S4um!kT5QVIP5gXZ1 zxtKywe3jR?uktCbB+k30$dD)WmTH`@s#B^4?w&Y?CrI{NEbzcmIB4}$LcQixKDYW5 zgR)53x;0m?*=lU7&!GCf(bB1{Qk^QpPVTyjmz882 zCf;Cis93a8t8CX@=kOl7z<`y~4T;`n&liDiRauf3zY&$iV+cz&MTDKt>@@b*kVfi} z7vAs0Z2{#tr9-ph5Jw@VR|?F-{mtTu^yzMUWwO_j_FI#qZ%5Dkf>F{503@P()8pWf zOno%dQAX?JFgZ$XG&5E)zaMwLx}p5rL8lj7H3XfNw7aj*lrhbvF(z=S7>}eYoemr4 zAWE}8X!FV!H+-nv!54-g^rXY?tBax>YD!jygLc;J@yIIC|J*5k)$T8u?S~Vy2=S(k zhNhz5JEp_>)Q=u0;@|O^IZkyn&Eln^5)3y|jW^>v3}$L@e6Y%^yv@@sh4H4z<^~Je z0Uk&CC-)1P4sU69bcGkORG_F);LxZZAYCe+`Q@Z+;91xcI@7-~J{Od0%2MLUQL=J* zZ-C)vy+YCKh>W+p$u~ErVK=WuBlepAUTgD2t;baScsivAr>s0(%7>%m9v2S1O!~8a z79NPjLcmcp4j8K;KGSX5ETm>`W|vjEIp(v=UpEM%Tc>05OUIk5>2kI4C~#sL=8VY) z1`3RoC(OQUj|mLy(kmG6y(I(XU$w2+q=i5%R(OOD8rv$x8w@<5u&nz=dbn;>RN)Na zMp_SY*4D^Dzl{CgP79jCEC^EygBzI+hxi)Pzvj&r-e5turdsCelNST#PLf`sY-9b5 zctInKz1FC@AkOLIos1E9jn*H$5C^&Q6v$;wROBMB~bMy1x8{eZn$42+4X&0H8qfs@qbSS!`?ldlp~hGzy;ex zb~zg~T4%$`CGFGF)U%@HU(gcA_U_}Aek6C0(jyQc;){M|bjc)qE#wQ6B>yg^h(!)qX5>&dq0v)K82FKIw#5{X^o z^p5nAuvVwYZvfq2;_pm2e?1O{5{9-T)rN;^N|CuZ7#b6#Y}qfS7?I zwxGyYe3^zInH-?CHEMtKnvXdvxpqO(U0-ay04zCvCvDa_?~9aLR57cbTaiWx%ViYL zT3<50>YO5sP`$yTKrJtKD0o$(rei&y3gmcU!khiDOs#L0y%i%Eb@{I$7WxxlnJ6M| z-x)z4V;W@iW}Y%UEk`RQa8IqVn}2RAQ>W7m_>BPp0qR*lYXH~n+3%kL>+qTa23xsM zvSypz-hhEZAWi~Ib-j`_trHX-)pP!GZc7aVjW4Lv6|X`_;Ef(lv!8Q!f!~%(xE(Qf!57mwum1}PERm7j$st@y~1}+K2^vgJF*?GzK@4FDZT-N;Yw4{#a0V1o$ zGL=WOp10;#kx5_o8d_=Tqz&J+PkUf=s9}$i8x3&9I)Dz;b#-%3iqgAJ(sFOs1+3djAt`=DzR*y%k@@zl2&Ov(JXs8;g zmw;=pRII|aI)x=|@xzv9Hh~z!k}YkhM+7J9Bf{FboyUr&k96e8{29LIfd4MN^*Flp z?Hm)=PoHrxEWhcD-bwGFdqw~H$+9u^TMpHa+ZOi~KDkt^N`(fh_uDvF;FTn;Jdh%6 zJ_wGDe>KypG|G~z*i@WDa-MhpEiRGZ^62(OK6D{4+A)@CsJ?1#^h7|NVSs722H!^Z zIoIUfeLgf1xNzGI7IL!nRZ?H$?%llyjt9QVX-~~@>c1tFoID1X#kggzN9wo#ZV(}N z!KY83uCLL1wrjVQWuf?QkMq@aea=@=R7#PdhV!)~6j2wjtoP=cgsqrKpFTxRmcG?P z6mth?7M|a~)jbK+C2xPD1OrZ#)YQ}{p3i&0pGE1%YGxc{tB38Ak#;TK=H?sinCv1B zE3e6hLb(q__EC%|z}fPx-CIW)mEzc)XC({adZ5 zS4baPva&Z&BvX)1HOaqEt=LXU2xK_0R%8NK?%^Y~qkImlesz*b-hhgWyQrg=q{X|~ zYJZYX0l$kPln#x8au8;R z9Z7K?MZyQ9LG~-a{%$JXWdrrQe|rLeM)hZ_JVo!VsuJ(rNa|NWynAv8 zBy?_Dc{xwPg?kS1&@3a8Sa+$JW}g4jh&cxu*9StL#DL{b+t)dwaK{*Q%zVU8y;Kt z7;)^$hyuXMghSt3L1JMv@#wgHG>bq*e(EVs#8*ol_+EEtAP5<&;Yxhx475(dF^HUI zMVhe~lZ;WZ(tCBFM({5dZsQ9tph2*zLAmHxcJ{Ng*w&c)QN|LISYiQ8ZYTViZu#a3j~<0iPF)_bqF%VH6FZ>#qO#`S{OI z)e;Yap(Af^Z$SCGm*%mR2Po-lK%2uUf0SsJN|{b0-Tarf$y>77B+lBIpEuwB2gUYowDzMbbomT1Y+Qyd$lctt;`J; z*B9F*Er7P1{j3Vbm>v`Y?XB}y?|;1lqK4NsNKuEC?f488oC=rGx(I+n%@`7#B5+>y;2uhmQ9}|2<^?LGVrNkUNtohSRz1- ze%?`k&BOBPib9iNwsB-EbwplTYh~R02$_F;_XGO<##}31q`8P?C-%zJ8)oOqj9#6%0R<1$0v@wdw_({C zbITz!ihJy{JK?hnc<8Gwe=b{4d|jaQ0OG+B9Z;}O8#i~SZcS@GTU!_1cMr6y$ztgR(ts8j2>3l^ z)QT6c$?j{+b?DuJ^{YDRJ6#M6ccDwXRxD-u(3^R|+FX+Pz}Nglb)YKwzEJ^2dqPa! z2930#GR{!k?$6A0$zW9W#Ql94E2zimU8Q1P@{iO zsZ{f{AnrAy!%ETPFgSD5qMpq;tpx}@HCa|sywS}Tpc4D` zrj$h%QHhdvB9O>kJ|pY0;ya~{EhM}*SlAdt_l_stMx42j8YXj8Ny&1F%9v}BI8{_@ zQ+-^2LQSQ>t1{$5SEEGY(bnVBJ$S$0G23IbJHS^utv5hcip6h*VzJZewI(24=a0!c8^EMul$2-l*r)i}*xOAz@hp=A7 zY{ZzPokvvbagNNsLVPoA5Pb{dok=FQr$bhNF4s%YJWFiT)rrGSdLGTrPOt6l=VIiQ z899)fjM#OCy|V=5-=+n0_A``W&OnnKWO;cR(B*%DF)2dEEK#x~AFv^{0JSYpRNAHD z!Q%Q>QG{?Hwjo7(0++KO`*wrH0iL2rWZ!DwhA$=?YPFiP=Bv;}%VC#}GAzqwcz}cT z`0<~OS7LzkKH5rS47@y`Fw;bmB<*OlJy}l@J`TvbvKN1 zSwN4o?|g1Ct1+tNO@kn(5O2m|^^>DP?i$YN*X0pV+LE6T{Du@7^({e3g=(faM1BOH z5>+?IK8)`}RO0byZ?GssN}FXRg)AqkKeNfMkf9H5s4_KFs~&ZbbJKrVI`A`C^-01J zH6zFz+e@;Qxx1GH_K4c&Gy^BnDDI<}(yL|art^B^FTR@5=>Pn4Ej=B4ennJ zvVw>baL1E@g2M4I73{@8+JA&n^8|X6)L>zaX*lpze4%li(=;bUPB;_)@pZ6i&IkN!+T^sz7-M?GWiAusuw!^srEE& zm6a;98@xy7BrH)ZM4!F9{(erPhML$BF>ry;erS)c8s=C%*{BQ%WaHRI)`BVeQ*kM! zwycdPxi1KYkrD5&mVp*o5Tux5KR-U!0r~-73b}n&!Vr|&`>G8TrJe#EE=r0Hh76pI zK*-W2cJ@i^47I6QPXGzwK2Rf}v@Bq~{^JR9r&+KSXIotSCOH9l%{LvkXV1OdE>?kP z0i|5Pi8LU-_ZVo?el8^cLM63pEsa3nyPnfX_VFP228*+$5FlA+ADnUn@zbo&gS}F=}-~L-R69Jk7-?ZO;s%eNPhp2RvXhXjE{hc?@y}4_<%lKV~#>+0;Jv8CL(GY2S*^4mGFil}CI|t58#$vGB00OYgTD z!w*$T-09X3Hf=P-FVsoMJbHg2;khFyEF4F{Sg%^<5wIQXPa7dvZ1CA;a7$f)aEMty z<1fuKfhU(w?Dt>@Up?VFsmp~wmv@Gb`0EMLN~d~)r+@mYDCe|K@cg_rz;K+6F{?nF zZM0@I+kb<_&;X166v*X_E0~U=poJvSnzJ5-T1U$gf?}@IE1GU&<1q^Du%8hZNv?o0lP_I&O^(Y-<0<8P-M{uL7N7fupRA?Vo z7gYMTMr{B&{trl3UE>ux9C&V@ux-HFC@C%52&M*#Utn#KA%SQH` z{pyTq$UD#h>m#nP5thak2PHBK7>PgdpHVtTDK%b!7J}aRk($Eu-82kwc2z}AtBp`} znHI)0Tfx7R5v}P?h6+u?^J$n4QH@SwvYy~Etm;Jp{%Evl)oLP=*oLMvGM9+?yy;na z#0?hb-ih&k%KgtRjzr1lbST-33a6~WXEOBuij&F^hiJwm`89{E#1+a|Sk76?+=3U^ z{Gy%vm$Ln#NW3SF7omhiPSwJ9p2QLjP4kOcJ#NcYi7PWRO5?f_LBXoa7P)uVUZ$}S7MEoj`3^NKRg9!+(yY!t zkLPL8W&xexCZ?^+tDc;5$i}VcbWJHH1uW8ZL&C#+4n*!wc%9~keA8;_q!luS0yH2h zz2=gwtrcdZSizTM>APMffQS$ui;)yD&^~BPE2-I+D2U#a0OU@SINUYuH&|>$&R%Z( zy!O1SFjKKU*q##L`qT?NVE#hKo<%P#F zz1=@Dgw+?-4;-)3uip+4vdLb*%)bR)LWcQAvnO%Y=yS3-S-M0qs~u9k3Yy>JVqaaLEbPo+S`@4W>&JS)#bpe$l|m$ zP^~e*3}G>^F)Y$y#ehg}NMVjW0>k(o-t_8`9Z+qdp;1&YdK}P6D;11Q?^d()Ick{` zNOC@WiQk2C*Ne-~?+dkyZnYPYR(CTLhsPc%W7RYo;}=$L=R|KZCsO=}g`qevy(>n( ziF7I{OF5m&l3=qMgE!;E=wXx>r(+PI>FZX7lh4&y!GHYt(fXtK`c=UC4!LN#=V|2d zs@ahu*;I=auu~9r*_rWNFB^Blp$~sH*Wd`ByCh-)wFI;{Gv&%9q413D`r>WJYCt%l zk#?vf1Fb7gacl*Wd8ys$$WyH3)Z#904v8BaY$43?inX_csztMDD$)VFa;0RCykUUE-rQ?&H1aFdBL2H=b!l< z0%>9va8!Ow;l`WeqK$_K8ZDdoENnBqph|89A+L4Y7o~sn82cRlXlKTCC_KY6K!F$e zGqUM2d|%XIY4D%)@t_R2HUyn2eNp%^nV{R*B!-hKAnpi|CsCpNv|X=ue|1yb7YN^W z5-MlOv0#!`f@L33FESz!@{%c9A)BHZmS*yhs@_{Ui$Ps7EuDBcAq@i_^~R|L%f=N- zyh}e^h2`m?n6X_#%D2&4N!|pw>?L1Wt*16+1cXQIk!wjY)W4|yh!^nqA-PBybD!>H z*>-SVXGX(gvS~k*7-WIRCOEto6Zg(H4Hl+gB^E-g4i0%`>^qv)(GMwau+SUKmsJ{6 z^3D;SdaDr?JNcL>MEG_~juBT#hDIcz9)57V>hRG@>KepfqC#QdlH`#P+-Ne`{&t$4ef?j6mmKy4-JI{&4P51s1^}z zyiqu4pfKAW$R5_n6c#!s>i}*?M`WoPrZ8ZFDN|7q25|mvWs|tUg8hMc2RfPtKmDWq zI>&_tSN|uZ&rec3AMKH7(aa9swjKdX31N>K@udCLS&-jLV{q;Q-bv{hYJJYS zlF&2B@kfI~tg<0IWrH1z*{fq@imc`$fQ#5)vwLv{?CH2?y-X^;ejW%q=#l&+Q`hB* z=2))DSZ~v?CdWo%i~-5i@|&~`6=pn$N*#J)$ia(@Db&`h;9I*dRhGQ$8Nx`^RIN*z zro)q~6BEAyVcquFnLKt$=2B1@NU!QI04G$?dV2lwo5c9xw9r9H2HgCV(M-8y(skqK z+^1I&WYe)>U7}LzJ6ffxs6LHCSN45-ba96GJ|HIBOc#oI+jE1(vIc>q;HE>ZuNu?9 zbSvmk^oxG_szp1d#X(QMF5_J%NNQ3c#;ou|_FB|JQuJ*qH(^4&V^`{xXb(E?Tj)_V zyGP$5g!OG|3&qin5l)Y3i->dRIUF7B!?FEAvnLx^2lSs|VLjXxd8a=yi0I|3Tu<$A z(%%oi?tu8ET<$eGPQX;jz#M+qsSA8wNOc3k@J@<#Ftw3}yML@G@843LwGCtYkCxeX z@7c`87MgYFwX<~v0 z($>LcwEzj!kz=Rqq%z0BE&A~vG_=s_r~i3Yg8$R+6Rvov^FbL{a-tg6Cgiahz%bHy z6HIutBtUzyvvhT#QIo3|P;5iDCuxv7TmIaIk1I3m$ z%5vP(|6j_4c^A4y8IQa=PXRLSi?a${`pzHl8trfz=>+H#{YwmAeaX$?;Quc&Me6l06-S{@rM(b(-Y(g?2b@R`_;>6Smg32`Fd zU;Ws7x%Dxl19iMQdAKk9Go_AmO+CEYW%m6}XVBuM>(i-*?H?PzGvErz#Lqptu08h! z%NFdL9fl6ReNqlOA$#5osoE2JXJ++h7_Xxvqa(m|t_A!)jtg`-XyaXX*+%|~i}a;0 zPxqftQKh#NG@N>^bz)E*Mu0Oq{n#Y@VCp30@}wr*%S<8AeKu8Bvzol&_etL6LP^b9o-aKT>}M229*w@$#PH%u$Lm$sMp`lzRV- zV+9C`h8O?r&$6#&6TJPCcp34SJx)v4e7WqUa-yQWZ@#XuzsI9*gyC4!K-~0!o9r)6 z%1~nB`m1Qg3cZYbY zY>ifYUN;Pypp)$&w?chaP@Fc(!EN-YQIHgsy&jkJf6v(qv^3g&uQTbwHuwJ5R}Z(L zA3spr_@3An(KthMquYF>DEt%)3yT1El;;ME-5KY1XG={J13OdR=I<8=t)*7I;V#ca zow|IlzX4ess6_JDgI!;n_`fvupP`cZBN)YfK%B1WD0H#eAeJFE>@Mme7Z&uF^mhId+NLl(kfc?Qi$)Af73mBWmy`!l4t;;6Y(ckCK z0&Cm6?~QNBf!hv^PBKL*AUY23D`(5tLrG_M0|VT1rEk*{c=K#gDawV7-FQ%vb53oa zrWy_)Y%5jpLA9b#C7iZT_u$=YF1Ty%dQq9EiVzUeqTI9(fV&mS5NE0weDa?Mz6)jW zrzo?uQ&htTWv7QS;{qNXz^rSwX5PoMVu~gmG^GBKt7X2yVyPGy`T&108{}`4)eZ1p zJ4RU?_&RSqKbY(k^Qph87tPy$e#-y8IeQ(o!o5%`))|eZMcM@gDq|AJ60Ezv(Eo-Y zP9uJnmRmIwhyz{X+g4cNgVQIQ_v{!n?9oMX&pA=&JfHie1UB?K7jHvDFT?c3&n&WP z6-e-xmsk2`R~a(-`)|3w(mcH7WiYxhm)dv2?R36Cgg8Eg1$6!>#lPc_=#lzuR0jhX z8v&7SNY@goD+Yh+8OkXI0rp6HRTFvz485Sx?hUNG9zJ^14C=p&?mobM6coe2!}3up zzc2USPXMn5FxoH6wQX|&oGLe1w6y`3JFnA*`D5?*KIoyC?C!rmB0CNu+nL|5?>u3O<>N={S@ykp56VYU*!dMrs%dW9#6BZm(n`z@jIpj(=I@JGz^^y%7b z-Svpy%5`dcn+m5+*k2@mFyaKX_C}d4zIIu`{U<;m#1`AN=O3cwiU!=0mRuI3gS(Ht zW?X6SOV5vZk{qujk?ZtdG?O{sCG)aSh~oe{6!oX<9J|=eXceZs(esQbIgbmjn$*qI z)YI)}%Bu4hJ}t3Nl6_83l_0wwdBv`7{sH_CA3sjWEGP8T&hOcLGFNKQs*wUi)CC0a zTNCq)F-6JHs9UYIVUhX==veOl7heR-K3aw;eqo+z^AoFPbH+tecyad=C2o+&Q9n2E zQquV2uBz$^?Bc*|i#JF>`Ne=+hnX-$OKNP>smX8Lqe-u1!m6*JP;Fb9K7~dav{HWq zKZrE&%#u@=k(#Dm8_+A!snXKTC#9eLCAj?K`>+?-(a}Db@Dyu>B^4b>NyU{QHyh!R0kxE+g&zD zyzDJR+ryEx2mN_{g*7MER zaL@*Cn-F}^c>3RZ!NKu{0iVxy#tr`hbqAC#g;uwTBblo0O6%{g@B7fQtLqFsdYFWi zuhWC&C)~UDxY2GrUn>zhV_Gp~?XvcD)}re8!tD41>qnsSn8=5i)aTG(iThMCu<4Wv`p<4*G~iPUUr7~6vP}rxt|_uq zEh8IkpIhDNCp0Z)ay?14ta>EEG^2)Z=pr}n-HmHLi1Md{6jA7tfya!B$#LlMY&IeuR0AmL1T5wd6cU;p<7gUjb zTK;S}k)bW*k`fbZ?6RS?KHwGlS@5Ig}Rp9x(9zsOqGpeogDS!iR8_TI(Z7q1HWol;jcI_tEh& z0*4LOa5W(AnTr9{ZV(tW0m}bN0JuSB0Hj$y^oKoW9dznzj>L9 zteFutz+^e5K9Ioeg4Ft0AOAj?#@x`|_n5GBU8${fKQaZEhb!^n-HwA&kbDm*b=+Xl z>M?Fv_0T`|iK6IeT9dk4L!Mt{RvjjyuT5DyYLu^(kejibCe}>F^!vcpsFb^l!gwO9 zTGMn?rc6isAn7kv%L+qzULlc3crRt-@wbB`tI9*EWXE9EyxJTRjZ(y6QXySj{QNl+ z+nO%(L)uX^W82OlUA|Bq@a+{{cX1P2EnRQLeFO#@?`Xnpe^^y%fo8y>TYNbA`bx(5bd+$03Me;~+$az^{+H$Qs?+UIQ6}_>cc&g$W zk(1e?s(}dMieUKi*}Jz^hHOvPn#lG~?-?cP2;s{RdDfg3gZDXT)2OGwU4`E&<0J_| zzxA<91cw0e?M?lcXCY_j-`$|E(LXU7yyZWXe$UeI9WxgM9BRW4BEVO6jac(ll?kxU z*U#=zlYLWL6)aPUMlxk^Csx8#sG52V4SUBno18xdRZZ`vO!Yw^19ej#6-71fWZ8p) z8B_TsV=|tk1kqEL6-c>+?8b3(Xmt(clS5XtLRv#QLbAukel)Kj5< zD~$3bh=u>fBHZLbV-oO{@cp==!L~+?I}&OBJc^B`31UbYO%ycKv;|(lBNKFRe<&(O z@iXpRS?CuByr4P=L+Sv{Z5EtiH<3+pS)!=Du6mw*OM4Nr9%n6TO7ieb+-02b!ybJ( znYCaaejEbsgLmQSM_b>+x`NBR+JO#=$yclXFY4YhuFADrA7vS!(u$;jASK-$iW87j zxdU*|v(JD3&e z8rKMu^x&nCMYyrOsy@F_Y-h=ODB0grNH|p}z{Uqtuxu-E8S!T+> zJ@d4p-}j+G^`!u5$a+J4j7f$U zzh;zw+uEFvjv5!y1E&=itXrR+01@zYo@_7PdEFcz^us^#y~W>0x>T6CeaX~Jbgr7LN~^%b!5`bsQCpYNM&&Q#TW($OFVtai1C77%PmV%QM2J=3`C480oTL?MLb^m7n?X$bc3e z`g&N2y~Ljuf9v*QUTr8R#dCJ`xEjHZqs4S zzZC2et2j~+%UmM&e$bS0Z#|i~Gg_{ScjRVEFmCX09?+1%F|>XW;|_IbjWFY-!%+Hc zk)Gu`QQaRkcbd~?oJ;3-H}{W>!Z#STX(Bx7xv6C5%O=i6L8klf8p%a+xNaO5emD-? z@V%9O;@gX3QS$rEsu$VFiFr26g|FgP2jC*EHU2PX)DQGk$c%I? z3=P2)66YrFd_AWf;Q#dwT@=;Y@Es%Z$ZL32K6*?_0Z1#l>;FhMiJr-#G`<#rm=7{( z`Mq)Jr-`7CQ&JH9ZsG^l@BK?kod$&!iEY~Cx8*ulX%_ILy^Q+iS#T(W#3BA%ShF&u9z@ItjnlAh?Nc%KHAOr8sV?u=Kol~uaT_VU)@l&rM_ zPMDKHc%H!ML`sv7Ewr2_wM~3_A{{JKrS*K__kG&%UtyLcT0UN)F~Jx2lbB@nn8G{! zP$t!Sf_%~&m#DA#Pn?)@ldTqpVQ2O4-=RxZdM#wg%99ZKy2}2!$>hm>Q7Vz7laP>_ zNM-Q^#+b@G*1Uv2^nOXTaEEiP-MN2Fgd?h2s8EpnJI}e|`Jl{}vb)+>JKJc_WMSy0 zfOFvHYR4Lh!#Ye(ap`p$8UHgANQV_M{L8^0lCr26$70PKSlafmHpP+gRdQW5xaj<$ zFjbuWL(Z5b>WMZIr2`p$t+jQGyig9YU;W7fDRpCYT3nJYdfUEUNLt#*qU1fVxQ$sj ztF-Q4G`6-ZzCBQM4(a}@!gb==-YivSccK6V4rXNg6HZdj+c=LV1=0JvDUoL3$Srhj zIqx>IFbZdD?p*kNFE`$3(S9$MP#H||xKX!bEe2mS<(1Xol?LFYM%b~+1pkA9mzapp z$n$OfiUz4%w%ZCU${V_`4@w1|s$dB|!D-@6blV^Tn}qSPZ-|!{>*kp(toiYsC;ySQ z{|7Jr(<5_~PPggSqnNkU9BS(7L{c#(Qpy@N9Pn4K)At^frZH&+VHe^3aH?){)5eGC zrr)%RM~w2x##~gL2t-l=8N+tc8;`gd*<57X=o&?#S8_3ot_7QxP??KzlYZ;iSLLqhDbMpeayOYX?-_`{-Ed5j zi0BHC*|-a*5510_WBm*jh)c)KB~dd|8x?}3qL&7oMlarwEjXrUixRq@f6N{|8Efuq ztyBAqvKPCKXMclE>f8-N!hM;6QETysEqiCO;7{!Seu3tiE91+6<|fGSeB8Kz9>g>A z>@&CyyNB+f*bF7f-+GMD&O;6TE~Ts_1K|cR;Jfet(lVf>y{huu+r;tm&-#~M{Un{1 zCN0KyQ|1Ii@%Q}HVoC3?&kxi;WXz68#HR1(qV78(tB9j8Gd525VrFro=**m$d?gZ= z820&IJ1;k6x^C?KnQx896iqC-q*rire$I%MzkW5zAZF)4hUdl2OU(*Q*KTynA@pw2 znr@BRRIOHO-Zw)9v&^?1-=&ss-ms%1QMi8LF2R+{w%id{V=P|aBZ4-}xm5}FI^Q3| zwG~wbXSQB@kh!+Ml1IF90(DwBcfp~I`Ain*L1-WUX*PNcjms0yAO0TqZ7lJvtH)Sm zprvIe#m#WI2m{o@B^fvfmBnLm!{~+B=B|tqQE%43TO8FA{Q-RBjT?77L>ttO5qTWY zy#!A1BB>1-#Phe)-cj{nF`pS<{-b84R}&6VUb-0BXKrtp;tW!7e0wp(oZ^7J`l_ar7Z4$G5^%f#$yqO%TP*a!P@01)Q~#&!q}Rd@|#EO3c*V7|62><7hOS6W=PO@g<)AW>m6Ku{T zt-1eUSV{e~!9agpz5{xVKAt(BLq8q*7`}{FGW4Ov_-C!bPmhxCoN;eC&kBZB%6Xfn z(Ngd5n=W^x#m;XUtVQUR*Kow2$s+zoRCuSSnPpJyAKn6tXX%zUhzV(npW8-NMM45X z`ua`oee)BX=6xK3CPPYWks;`8C0u49Kg8dvd^}sncHO61xsc5IQ0o4lPcWV}lWEkP zCl|BgQ5d3dNq3*Fa;am8&&Q)A1kd?)v-m8hGkbe#H6A~er??5!weqs&ENU+?)(Q#tS7S_z~%;#UiF_kgAh*Y>7nfkM~PYs`E(6Qgozgz7bu61-q7-2on(#iGf|!uoi! z<~~>0oX|(;mr)wq`7>FJkv7x!$LE`7YuNr2NxzSZX|^=Qs}CL4Ls_`s+LDrOXhoHL zP2Qi#>5fS--TUPi9*#@(x?Wu0^24NVf@4PY)Oueg1<&Un`I8RS9SW!+w&8-<#j)Y% zxX>YT53i1w$8%=Cm7%rm&49TRUPy4Tpu&3rT_*+VnOuff8!v~@!! zs`T14w3cdCnNuJ0d(0h$#`v-+GOkBe5wZFAr^u@;h+u$G+T%uq9s z*~6Bk?v3Fw{QVOD_L(d!Kgdre7e`6g*_edeeY@ZQB_S~a0&Z^A*f5of}f!^*?G z@P6&Q?;drD!IV&u`s;(=MIhwTl{8#J6s}?kYM^oYAHdcv195MI`_}jSbeoWB|B&M` zBl3?1#mbJ9%Eh|`fxgQ8REn1oh!d90XbBT`W0mMBa@)C$UP)KdFhk435P;f}_}u89#!IVGE-ERDhsi}L&R z>F*s~2^1Cc+HCRCi2_JWewzO1o@*|Phgb9 z5BR+a>GyB1sTtCsk4pdW4&ud4baTWQ8@ltLEEC0zo*D|19SlO}_-)2`#l=J4)~^>Q zO&4C&8m0~<;@O|Aw^Csz>ul}El8b46C`!2PvVK3~9s~}s`BzAgUmMW25BIFC$H=-q z`=ak5v*yi+5@UO$Q<-WcI=V)FGcS|_TYK%RPGIHxQmyU~ow|Im2t%4zYC-sa^+0cp_;gMqB7^a?a`(KA`Z z0fP%bo7YqxZI3vA?0BfF4=gz`N2BTQAt)8!tLi-lV*Wwem7Zh~=yF64LDC0K?PD9h z#O_0Q&(P-;mz3lM0Pj>c7+MP*j|eBgxuTh?D}h;AO?~ob43yXw&^ccTU=>$XQbIxk z7X}xpbH`gdXFU^zu^Q-3LG+)Z+k;LXj{PP$lLb^xfW|(ouL3g{(Z&F)__3hR&4{k> zGTScoj+UlyK&+K+;Af`LV+`{>H zZaQ%{1O7z)Df(s4O=QAB;z|To%(GYH^M^GQSvA{D<0~Exne)p#4#mhJEOQOwMP5Z0 znI_(23sPrW$O%+Sxh+6UVar9{-LI#3xPh9?Q_u0{(s`g#rFu^{g+-IBX5r>=ANOab ztwkP+Zfp6RuA%Kb_Ym(5j8>{9PV_Uv5RU6o?(js{rS{Q)V3_U2NeTmLa?m+$j)tQW z)=n6CI=8`z0FA*LWAcg(S>D>on?9q*4|3XKO)LxEa7qn+FtoNBdy;)k( z{S&tyg`rM)GXGy}Ce$C^pBc0yf-DySLV%IH#~h^TS>=>mhY zf6~4)8pu>c?$Pq_u@QIfFQ!h5h(g~JMToR5`?lnQ!#=b)peuVrB0QX&cF=59zuhlC z_HGjSQ-ApsXC;zO)}TC*FE-%3P9^vYSYxuKmdySJ2jj{3^DvZH-=k=f|e2 z|Hh((Zw2>>3)cQzY$II5x>9FihY)$}5R9{{X-u{%GFaO4&v2DbG(+qC(?n-kvxE^u z#doASdss87$nVp!&d;A%#%1`(xYN=?CEG_@yAKU~FBBPM=Nv%OCVH-oM_r0PFy5C# z_m_{h7V8Z>Ll{&CB_=1QZ8Y0Fx@nY6HOrvTjPz*lB1<=k;y&$D+bBVf#jw_wPibkH zLt6{G14vq5#w%sJ36pJC-)rZhSze@_-;s&@cIi5CK35ExVr$bx<;N1F4;@t)8|xfi z%Um(j;&rW_wXk5{^Y0ajXBxA)0%d;3-I?E&iEN)yb~gtLIyaaQRJoFQT)*OrZhC?$3~d^E`XAI{Qj?P@q1K|+zvP4*Em?qi?*6Kogf0`2lE_*a z41q**BA` zJWhV(-RDFzCW3RZ>{K@Qoz#_@<6@_GB-*HGE?{o^{ZxJP+Y^S`A2)6BNfb<9c}oo< zV}{m~H3z9RkFne?p|^tb3|&;WEYr(ejf`}-tJX5l$6{)Yz>o@KsCfp!95)yz@EcnD zWDyhsNYRzNQgjczL)C;O3jWh@)Y%Z#xu6O4v+{A|wF`GI)!nH+lZE;ay1xSQtLEly zD?0{IVuONwjSCEbN`>wD&~u!Uqr<2eJ-`lzi9karbUIW)5$@%ux19^%^chI-@xfp; zPhD9H#=^SYF|=)NXH2!O7>|sML{C+KroYauqrMXdSlbvg_ixTp-3lH>J$~|}>FuOH zjh>*gzEhvnn96v=@1O>lm>|O(?QwcIUD(aSPl{8lwTf0BXhh@X=H5gDAE1@fUhoE5 z%y56F#bMqGSp$4#C?6ra)4L299n40BVc zp=jLzZ7ne6WJ?@+?JOO0V98-T>NYC39xWO3#?bmlnDVKiBSK9bra+glR_L&;Nr|sW z*BP9G2uIM}E;Ee$O_x{X@oSwHL(B?YIA&hCbiQn;oAYy}th~W$y7j#q^W~=}++;YI z*4-F(jgtST&};Pr4#rASvyt|R`aQH@i;$0q{y)ZLe*(A}jL#EVylsv*78hO=2j4*; zB$)~1NS@zOJ35nv$VG>Az^-m#}3_DA5Xiu)!JFDuzMr{;5FV z@H3?svQbKHpI?Zkc2T1kFG3<<3Y`eRxPkHC{L;@CX^r>`7l!p*CRpB=>a<+noI80N zM&I$LM)K|-?YmkqIyl5jAfNND<%1x zUmqc9jkIs4c3-EbbvSfG-pyBGkH%}hRU6|yd19`hU?%nOv>zDI{`y+9G-3%Mbk&P> z&)*hChSv2NSinWJZv0L0TpC4u?&ZQ+#79I3EeGc~)IVg8jATmfzHt7jkALSpg86%k z$mQ67RR9hdC`blqGH-?7DrTzvo$VN(@*MxErzi)(^`P-{L3Bp65{qJ{VE_xWOZqd3 zSnI#dQs%EW>-dyr@}Z**S|3b?sWzhcTt})Y2R&|=hWaw$Mw!%fQ%M8-Cna8G`ca7 zCZY~+;v?;!oIuP%P^Q=IhS<5|lNs~p*awH~7hg1|#n=T*oDfuWQ(SRsv71cNRPb{T zU33@!6iWXBTeI)LC|=oxwaXqVl*VN3lls3XsKWvRZuV}8Qj^6BZ=k1Y;02GCm~>k1 z{qyMJ52xSW-Gs{Os3FVt60mnLDzJEL@*gcqLywsZ5nEADl;=N;Wx7;HYm@@DRwz&V z+Ob;qQYZn%D`38S{y1)E9S|QSXsJIN*gT?NW zpX{GIXqL4|`g(khciG>csEVJlhk5;eN{fUaOBWhIR$_otGN3(Z8NjF@1jKSkHUu zgE1@_fQ-lu{$%Y~X`Ok|meBBvV_iExr*+0j$09kTQG$tMS1{6R!<2>`%CNt=Wtt=a6ClUIGgJ~LsIb+M3ssWJB;xb;AoXIFsiP70PC4g3+wv(b zj7=dMx6LG3&*-HZt~)((bwY+u?ag0tMazpA#ZOx>_F)KT_nq&4@oSpo_HXv&PKf-m zE(L9JmtvhIfV>ue6{9F4R7?A=mu=&WXZz(EYMI`?diKV!5%s;ne97!?rPv*v>o(cE zJXww&(pqBK`8iC(*OO7>`I}DNGsDXo@B15#N373e(WT)0#W*omIrfK8I%TedN%dek z9!?bw&TWSbUNNf;Rw359CysJ9raIi!SOPddWNp+tcNkVU<8R!$cTgYD(NQ1xJ+?5m zIXlL&t#8TLyWsncU)FZv%$k{|EG@W7TX#=x|9z`@_ExuMne#J0S^q?OXAGKVGApi? zI^Us)9gNp1cN~3$D!ryM(CpH}qBwk4emZItf<}(fVKPSjyv0KajXK)+$tI08 z`QgMH$kx?Cy{1_mUN!ciq+%|CRzbfTW9GcZE9n>hjX5Z)ikY@jo-C|wUQl7^bk3Ct zYBYVFzEuRdpIXhBWYYl$^f&^-KD#$hy)mnB=(@ky%x&BG`v36JR~$)}WIs>XXX~S= zd6aaYqCEM%7^Ct>+3BHOv*Ce?Q`;+o0sd28?-_bTr2twtXjWI6m#p+?O}#wl*{}#$mXZK1w%?7>rr`tdd`NC0+8prcPj$1kH+qX*#j}c(-4_ z`Fb+b&IoeQbzH2de8RlA{A6lL!StR~j79OoswcmGq}HD4g(IB+&Z^3755n$?3n2{U ze2f+O#I&@O0~GeAan9xM_@TDsSP;^<*Vl=6u*^p^u7H2~%HO<10bfGaaGx@HHocW2 zv+yMJWFKg^ReRoU+Wu(FvcT_axR&gIsVIIgOH76rv1IjQx-fIgM>6a8kKCV`69Z0t zwm+gGm!>7|NYqzTn0Gtj${6nZEPcyX_cB7e$o*sfl^!pP)g#9>I#rt9p++MtDJI_H zO5~`x+vdBj-HeT3Mva#AYf5Do24*;8h2z&OzBcXq{)_e|DS6I^o0{qFP4rT_t1s^@cQHvYff@<2ghkjo2ovc{&=mIgFZ_SJqvi^aaGbK z-Z7U9awih^cFFUb@y6>qYiqkbzKq@3iQE1$VYr2w596bU!{Y0u5rKjAL<`NRo@L!v z+}bIc*1gu#cSFccg@eq$DtHEZFB-n%4p%*#cpDpT3#yCPsnaedefUfQ9U>YW7=)NdsD`1t;zEl;XaW`Ep2c@w@?tr^xEFw5sPRSz51UBIxb-T$cW6cU2; zj8m$KZR%75BrnKoWt_%M7(T_#X&uEJ zy%ad15zrT}Rns}wKU_y{bAH#s!ZPj9fLh*riJDFUuR@!canHqoe7@M~Wv2A_GnA%p zdf^qymE8~Y_NKPkikQRe4!WI_shogXYg1p+!;C9AqaT>sB^MdieMtRBYrVhY=X*xSE- zw?kZEr0P4>sk?@Carb|8sX!&-SyOpt8ou$P|$1sMRuu+Klb^I-7xkL}6EBAwDS1)amHm5xsj4CKLwK`dJq&om#Ha?}ajo{u|R+D-CzI zjvY`&8SNv7C}VtZy82#(f+(0#UKCP_d zn|np)AZ~0tTwfD$i%=R6SNm~rY8Kv@>TO=t^z?z4B8gbtjCBhC0)9I5fMVQv1#F3! z>GdipL<{9|=snxRngLzSgX7s80i^vggB(AWe5Hd8AAJa>i%;6|ff?<$eI9H;a8Tl-fTJ4O2oDGP!L{s{1c3XVndu_aY6}GY--W9 z?!%E-`3sG=^DE;3k|q?IsCke56P<%31M&R+lc&X00nK{ct9x5FNEDu+mKX6ydL*uH z8AH4y$U$xJl>#p7{HKil$Q=zU+Y5tX3U4}J1+}}mMifQKzlvCQ%Y4XmNm7^&aV}Yu z`TeavFHUtPqAR`%NwMF3w&mjfqi5rqiElzb zTR4fXn+4qO$moCPR*31t%aAEzTrwZB%g#zmyyDbGdC9jypNaMG0>^Z1I}Dxam=q#uTo_`rAvi=DzyA+E*VNt{a=K z?156>nja*0ZsU0U8lQ8&Tl0Ofc5>Vy0QtOWTyWXa$Iw=5SVWnCQyZ!s!?*v`tWE4E zhJ@~Zb!By4r1Y$dHN*BM`JhEqi;S5t5KsN78#}%gnMV+D5dQC4QG4B0vM@S_G4+br zn%^gygHM}(HwLt$u}W@VYi5?8AJdJDP$&~gyCK`ZfdHS)QTz$pN@_nbNsvFl9t(d% zMY*Pc{k<{$xtgf@kJa6%0GWYs^Dm0lHxme?Wq8J(REYE((d$1Q@~BQN3iSffS+qe%D-1e56FKg+)V5i9*yeHce3T}3t` zXNZ|lo0T|s$b&aQkV#I}lG)>y)nH^!TS&~5^)U5ZGL}Xzta3P>UHc*@Jt3EomXp(L zls&S7tVr}nDD#qs?06(UCVkyh{KAGZP9-&-T|k|-j+^(1jmGDQE<9^IyON)0vam}C zwO|}8KuSQ=;+AW319~1Xq|jwLP!F|b~bZ%O-v;5JGWIrL{?Vb2+?os`im|appo_|Cl zxUnzGVHh#{yPFrl?f*5gGa6O1-Q5}f(vnZjIdL_Z>r{*`w9{Bl%Otyt$<&vSMw2 z3gWPBwss&UJnGgRs>+1gL!_HbODz_)V{9tM5%YF}dhD8Y28Kr`8uAR>aWD+eT0V9%*sbrXL-JFxehF$xw-{}ciAeq!Sc|UiK*2CjZS`4vxzWvSK znzT=0*ysIe{C^!u~ziwo=nST{DsK2wdpucD(uZ0t!u7}qVk#p zR&jeWW#d8rQB<#V^M<9j(p>DuQIO+eH1Q2eWKXgc0YD(~u`|wELktCLjdCR zI&$M9>UN-<$M8gc_eUK(uSh?X_AV|ri;9JZ!_Uv3r`nfF1{s7ODIq(!mpsl7AUtwI z=utGT>3LIMJaOhe?LwM7)YprfG}5Rl?P1#jw>>%aN^?8FzMWcmd?g`=NJDe={`Ua? z`}bwi_8;Xy=gh0~mR=XmWZ~7AxGlv)O9-W@i>=4TlErY2i057&)~DrxbKmZ>$1z`m z-T3O%6FPd<)i3=++kAR$pWU+~-}s)D)oU83VerjI@=|WX5u@TiLqYx9tof}tn(1j} zVdw~D6DMSQh?-B5KYWMkAcC!`s+@6gd6#}$+M=57ws2&#)Fg%>nhsI) zPa>>Yr>Y_=?L^;D_5PfGN1q!%T?9pDVUxgjZnXYr+#2JH=zvO%ghpyGM1S=ncWA+Z zj~tiQLGVUk8jO;M1NywzxQEPnJ$T|tJ{4)?Dn-kcqUwu246c;OAv~_-rc38nSgS|p zg0ki<6&)0etdOa^m#!#}QL|mIF{QKQ6|r)R9*%JIHK}@cb>)T=EP>ZeCK7Rb=g1Tp zEM2MKy=1G?8+BoE{R00nH%OoM2HLj}9dT`3SqMx+7!}WKZFryZSJoW`MIb(xbgtEY zP~RV{kP!U1ophLOBlPZmv(pDphH%~Lgp0VY`$EWXvS4p^%$pgQM=bejCY2CCT$HS2 zQ**mwJYP|%e0)uQolgpZU}$|ifavZRoU$keGbqR7nbl!pe4>_lCW~S<+iPSt?70Qn z@hMjUUu|LPP+qWX({qxXjpsXRIizZZ^pIoK?3f)?P+!7LSPo$jyY0xslOdPE%cHN& zJxd;9>i2%rI$I?>%9OF$+p6$>)&L=&6#%vQPw8cag9aX}t&~Qhzt5_qsF{GX;uOdA z1RJBM8Rwh-`>LJ&TDF3j+U;Y zVL9wJgcwN-nRwS?(9$`cYZTK@Pv%#TA;cCM;Ovk}P<^YzSquwxEJm26ag$KtzMq}^ zpxyO3ed#{$4+ee$#Y^ew$q!kHRr*L1{eSznQQqj34h*>2>b5^)&P5cqHbO)asG8=< zDBEn!&~V>KKPTasqUTSAbOups^s^Z?Y7NUV#-w6gpE;UHiiUO#)S3%tVBFN*;tw3V zr3DCaefdll?2xUy6>4C@aQLxE|1ghVj?G9*pV4PUJNES& zACHkeyMqWJp>Y{5&QH&`gf7$SVk_j!>hDs0(x>C#-FY2-#W505$%uYlMU(N+HUkjjb0V+DPOVTC3&V1F&0EKdl#8 zv5QM?EncsAX*{?7Br5EC06jYah2jO`wZ5xhpA?Wjyzw{%U1;ybuJ#eSJ~bOXY{>@$ zi~UVT=|`pu63Xe6)QKWT-r>nOwaG?UY*0>sk0_;Okp*gmc%j-y)sjQ-$axYn^s@!_!JlSt6tN0ZL)qXF zjR3WhX=8izhYkw=42Q$QkNPM}_~tNW*Ba~taQqA2`1YPfI~Mx|J6=AM)fc!Jb_k`< z0Uhvh(3n{FQQ=`KPeO6NSRP&m{i!`>6Sy^n?>dCeWFdo&6+`hwT-UvT*m%8akt%4x zZnhPWNA*Vw9E_3exD@<(Zqtt@e@~J0iecu%xNIFG>fa{p7R=Fd43Sl{8#_( z+BiyLVIgQuCT3x6yyE9*saanxlzK<29J7d>NKl@8$U?|z3G3z$!;|ztcF*teQ>fEQ zK$ABVdJ*q)maU-t3tXV1vtOgmWN{3g&->p68mi#W)zt$&Od=bAmJZlMrvV(a1LapA zQ&ZE11VD`s02L&ZuwgJ6FhNe$9X`jRs)W92DvuxU1g5=Ib7hE{WvIQkq4~2OeqC-e zUj8fG3N;4R?{e?M-It>95{gPVf$5_4#lR9P(G{qI>#c>}U^~YDP^bGF`Yr3BW1bSP z_3rRP_ubQL6{pnWqdv+f3!yF4r@vx+j{5snIr8wJ#q{Yu7zA(NA!gT^8B~4XJr^PX z^xD(VyeWiT*imu>#L5T9PyHTeW@S-?v;g-70G`ZDO;=rNG`_=3c{G=9XrPJ;A)+fg+Y#V@L#KVymUdUXS#JZgzj$aQx zCcsOcLKPm(r6_VE)Dk7k$Cu&!2+&&MskSS_`B2VW^nro&aK{UEH6TYS;0^a}kk?s0 zy8I&})1fV&+XSI zEI>1Swx0mpz&OR-{E-zjnJ|FlMs;oLhUPY`$I5OeE1|2|mVgo)?S1M3$U07(Qs+cj)<(0A=;Z6(d4{|hS4iWAHXR`4A={XG?!#nTZz4JX^ z{`&JHPCej~B{B5c;OP~0{N*atbK2l1;nXx3Monv^6xf1a>5VtxX!pJ)c#ub>DAKhkxcjsxW6isHFcC;;)lS>9 zQaqLcBN1z2?Tm?0#0}NhN6~d4Kwz2VP|Y5kpPygKN<9Hu1$AX2b@c{7ILtd#!MZvI zepW#MH`D_W^DfeYKXGr`=k&U!9+!~NJ`iq80JQ^JB?IoO4><`Z%Vod-16$Pi8hT0r zfJ;1qm3+@i86xGXkF0tQy{ny=i}q!=XY^qc^Zb;rEp0- zlf}+RuhPlP-CnFlo9x}J!b$sJ-Pa~jav3f)-c7)@0POH_NN z6*P4@7%^pKqJXv~r_kVFG;QaaOU@^AmuM9fSrs=}nN-!9|j$w}@f*gw=amNC8@7A%EJ&@!-UhB8WN_GLWC7i5OI_d=~ z+yDTjG$!JpX7q|S{M|^RB)kM2VXl2rBo|+PGO+odP=G4MT1S9?^8oZU^yqMQxi2Q~ zH3J3^fU$rIJx(sx$%lagjAaS1z%7HCO9mU;ng%RUDPEg@ln=Oh1%KCAC-zA2o!D+p zNz|MkbVS;oj9g#Ezd=(mUS~fi?e`cOw#m$rxVY>e24zfdgu1%b8PIYkb^{6$%kTQX z=lFOE*f5oB1Ol4U(d6PpQcH#tY5g}D`IWIu3PS5V>~+k zsDpkVF~9)99q*BT2Y43Dd9Ny0>4`7BkA&geWm`B+U`dynNel<^{sk7y{RY+&$xGgB zWbfiKyx_1SMOG~!uo<}r`|!NhHC3uYGpANaKQnw6ml z5Vhkw%jZWT4<^E0F^6AFO@kasafU2GpUcN>)@%g{Eh1n09F9+m0~(sO^JK^HbVqk; zlXxv+$a3;02OA+^x2&>~90Dhiu_o@Y#?Vl{D)aJr!GcL7I3v@kDJkN6698`8n*dB` zx#J`AjPreE*_kc^#jr^z?ph6#Y-sj|$`?-YJ3Ep6cv}j=8X&o`}1592WXfPTT z%!W!O_^M7ic_xdbo1hYcp#$QbCDz4S;PxnGtr%8W@{)Utr}i!;rlbIKdMoUOIk;Uw z0&tv}4=n;{q!{c1rliso((7Sgj!FH5=7M?3gt~HaP5_N82%80pcifz}WHb-lm0yk6 zhm1TNPf$7`(#Gk1MWfa_VqbU=;~ ztKk+UR4?fi*bh#}YqlzxI*(81M!F`tFq(?|+Zck<(#$KLy$Fpe+A{(c#6F9y@E zp2?!3aPg%?+)DjowZtCo72AT9dL%{#tvi?2VerGm?sA{gr-#E3@C66s9CntP^)5RJ zOGq@ldGjVBBI4-C>oD`)YdkP+`-g|8pFCc?c+t_(0TUOH0AmgTQfJ2s$e#7Sjs?GZi|QH7vTVTVtsa<&?D{#o;nXI-Ec^H58%w&o@0;pT2^YND6j+}T0( z-hq#Sp(x6%ucor{!;s~^EfarYer4rXd+rwmv$M@Xn_|`ciEIJ_n)SCTrgCy}b04IL z!q#KMKi(e6*xAvcQ-NfA#l*sL2%g;0@v-O5vh$i3%PTu)XJC`+?&^wqz$t0d|8ESm zfIvlNX3O}v?#XNIhYxS2?tnX+o0EfV6ZIE)Q&AxR3Wvmmmd%O4qoX4y1PvU7E90DsaDoED&X7NVnj z0&q{XkysrqT?qd${azy%)J0Y{K-6@lvc0p@YQ8NT(&xHGkM4s0v#_wlvTCd7>W(+~ zoU$A)4drTDS}voVb>xH~&8udk+iYyk6W=;c>_wIbvj-CRtN_!*W&M@Y-FhoMOne#c z$jhsifR=&bJFsK3Xym=2%l0`vu^B5Pl)P~9BBhweFojjtnO>BYl=OFZE2j5VR#tie zro6ei*`rRJhUP9+V}4#9D=X`2e?}025iHFJI&kI`Q*PaqRgseN^|q=@N=oWUm1r>S zCXbdIf)O0Qf4f0afIkuN&t~rLOb=6EW8#t%k&-e|H`afMR>)9sUK`^R6FbhYm;#0r zxF0gkN6$*phog#0Ke(J*TU$2#y15$pn0PlnjI3}N)+Z$-kYBr|$`~IT6N8+p-3JFh zM$-)w<1HaLEWDVly6PrCeNaDp88|Ng{PPdYqG)?@5qlZ8H-b(vS=brY zU~zG=fq_BRgH+^rdHx(8yxY>knjqbz+}zwF94&2g^AFw!#bIH+aLLs~Vb}H5-<(i_ zNQ^=s^IsDa6Lrna&0SmoCS5icY$W2|C<&)n*r@yZRf`58D=X{n?*8b}TLM}Rj^2@x zkrN`l_{hkCnNKg*QXy`r=@E#dlWp?D&E31OaPMnxTX8D9VmO2k5BK*&$oX=V(o0LX z!0Wa0v1pKk8x4I=ZpMEmi&p1a4-AY6x*YHXGYkHy{70*Q3qN8}D?x#wbTla@W_WNx zPhL^68ybxy+&7=36bI-I!`f(SY+Md;M4?b{r`T`+m6e0l)2C12^sol@C2)UJ&d$xz z%l2EMU{<*2T|SH}Elf}x7SNKEY#ibj5)#^38To0c3p_Lc;gbip4vYp0h?t*AJBM75 zue^vcgAaYNmEG_hwXh>80^KzR22$z>MGF7NcuVlNru0mbQ<)6onIW5gby>DN#)%ay z6h-}W7!yy?WznNR1eBcDLjT0<7#P0)DmW9p_&Zke;U#nhFt2iT>P!}p$EW#IPyL_1 z{QtWzyh#9nHwN-NY@^)?d{k6a5V}}8tDZb}17&{v_%TFYVC^B`@{Ns+Z5|#C1YP*+ zUl`ry;K0YlU7M__NKH+Z%dl*O^n6MBPC z64;jXcc`bPrqX4?(9m(P6RIQrx{`1yXXl;$twj#~>cK(OktWy~#s?`!GcWPQA(A*g z+locBnkHAY4aRrE-x?V>sA2YQSQ+4hYug9 z#5}-LAA;RLFxs=!rJS6hpmT>!8qJD` zkT`&x0hl>qBr`L!2PB5zwCH$fcieVlaIkF+-Uq(;@3$2dt{~zZ_1rGgQi8P1%nT$xXHba0RkCVi)pef8QknA9W>;XA5jnohPKvMMOIjoGxcG(M~0 ziMHHl;}4aUl`SkRU=Eg+me$j!^~Z+;Pq;z4zOP<&B?&o#p9_{vBNsK*GB!2_(0DE; zCMJ6HAyqi?bKLEqA@WQX6}_gV*GWiHg&a*gqHe=+`SNAqO{e6K&Zpb}SzydU1{kcXpO9?IxL6t8yNp)2fT04u1iVPc` zg5X);#pL98EGE0EsHgy~+vY+i*dKG=9e(~=Q)p0l-1rKftT-)g*3Xb&f*t&nzH}Kd zUn{e-vr9`BoTN%gf;6@ry}ct#POu%Q0uMhO%5n&r0*A&yno=Rs(B4DwWgFFgCJT24 zufyFnc{w?7Ii=HYv#`|IeS1OBI541EIFdVL3GZWlLI{4~B%PR?EX)PUu+CKvjE~8| zV3Ek%H|AOw-YLUI=CS?bI*Z2V=H?|QVVch{t;BQt2N!Hj(Q+9BOH@8b_Go87yUJl< zzCAKBBH|T+xVSjv$;t?fPEU@BgG?G2dUXqvd018OiI+*%#KZ(%K`gueD*{Uty8T7&!2{cof@F={{0|?@ zr)u4khq9KTyD|hiBSAqT>*zT-IfaGC#>YkAwZs0No3j+Le0cl5ym?t+kx5v)%!uop3n>Pg1=w_fg@Q6Nt{*2ip4z@$k`@jh{ zF=`QGu&la`*y}Vh6qsLe{CmZCliGnGmX=Og5(j1&p&^3*E6Y6q7x{vMj*Ym z4c&GZu&^3nWAmu1pK9@=mQRW3AXul&&CFyF5fP!MZ-#w-is`|POX$&acs=dyLLS@Z zZf=#$M(w@5ds|z%6@9I(t(K^c5J~_3ewE1f`Nc&>j=>w`YWfWUJ3_z~*rL(r|05EX^^TxXmt<~ck$ISEft3^^D(Fx660QuX!q8yg#tCDLzr zT374l@bKXq@N%LZ;V1A+}AYQsjiNKl=0F) zmZzuZI7MAu-FTTrspDb~;Vo$#N@1t(UGXfM1vmICqeiVkDc!BDtzoIOfQrI160_;h z(a{l+koZ8J%eW=@GCqEozrP!#48Zj0>Fc9&4A3+M;ReZEUnUg4|LO%Xae-cy11wh> z8XBPdgiyp1d|il53#_g0ckjN&L?I^+TqizZH=Bd0fn~SMTU}WhOwK2FGBGsdJOge% z7M|0@yD4e#bSo0&N^^s#G6Ke|W*Sc;wmzLkR>zy)T^rSM`1 zOhUdMcE&q*?j-Mmjw8Poy{oOA7#VTxOOpa`3}RMTBGT!_kouGKhY3ivU~O|X3wJj* z&`Hm8=gxU~dC|#wtQNPvc=>W}cGk<=8=@C(m@4`5(-%++a6})(b4%rGJV@ZRnEf2^ z>C>kjeuMNuaIV|2rw$GdpxY6lGy3md8hLaE7xK35Xs__&nq+iR(!?Mih5&}urQ^GQ z!pOw`@<3tpnEWqylFOL7(m4Dt=IF}ZzeE#Ef1r8)=^6fui{i>BNBe&;eh>9$$R}1` zn9+nC#Af*_#!NW^{%}U~6`Tg?s-OmNPYjIz`6U0ZSNUImfl7a-=S(mD?aiLu^Z)v6 z|I0Iw>%xMALsj!1j4O0}&X8fla18{D0V%v?u!ErKS0&v%Jfsnb2}qeEkw`^-^1tGF zHf_osKb)sM_w8GFT-*l@frT4PrK7dL7y-F<9adsnTUgGXU^jF!R3?LsZ6+$YAh_h^ z-8OZ4iX{xQiXiu`qOCm&S`QjbgMj>2&#Y=z#F;FTVHScQRFm+Xz?aX)zJNjhD2@A> z^bTYjVIpOUuyal}_I@E`FwpIZuz=Us*I~yy{o`w{D2f@`+i$>BL@tPTh$|CQt7 zfz=Jm7>qJ_u2HAgFlPLq!|u);#O9L_x4?4J(HVn%IkEZ%&8s3UR>+tufvtnpFgY<% zQc?ox=x=?23~glO7`YjgASkc0PU1z+ra|Lb&^51!2 zTVQ2_gK+-*`L)+PiQS96sbRsvQFOAGzAY^YnSZ(I9@%Xw;`HOo_wGapRAEXl_!gpK zV!i|r)xjN3m70Y?#TT?8Rowd(!OBQsSYY5-xsC3_hY$a+?!E)4s&w7**uJ(gAqGG} zL_|SQz(|`>kN>s@nf=JFrqM%4d;DF?Kh=+J!*49hk zc~w*QP0ie@nR-@7IAQN^|Nj@(THp6mi#&&tt&sZwEUhXpAD^7$lyZ5AXvb?{_w)Qz zttv20SQ%ae6*`#013ud&9j<9>H{pi_Ku<6(aIh-+e56)7NU6^*Fcr`yqU{v$Eh1W} z3YO=S4Q}Hr>w*}@iz*r4NyQ;nfD3Y^#l>eZw||OG_xJMygB#pz$;RB3g5o3Hv`TRQ z{s+#8n>!9)@llLbR8|JqDB>sIRnIXZj0YJUd<-+koSmIBb-1{=3f-p7U4MGU@@;CM zcA^H^i|l+q?}9rHHAI^A@bTmR(NP&BX|VKKo-CZ*j3fl(%=hx~rD&(g5rqf>Co5tk zUS|94Jr>nk9{-&Zfe#*xVVJWxxqT6fH!DiO+64E6hMLRlw?Ef`O<#Z&mn!a6Shsda>GwzFl#M6YSfzDI@$N#rB+^BF516REFR- z5!EtuM(}VL6(eY15{xMEO5Q~P+Pt;O166&cG!VI`-{B%bUnK;Hqg{i zqsZ>vCz-ID{a3ACvtj!of|-=Nf8)lDBF}|gG9Ed3d3lKke!lUQ$TN6>A|n65rvfpU zoSFGlQSpi_c<^BO;j8j^umL+IUIEhg{SX)ycEG2sy4q{1=G-|y4h?nnDR6zb?iauc zEyYCQF9=7h*g`Mob5)fUd=6>|#{6`cIN1Pj3AP|QbFrYWWa@;77z!%{%10+=*Q5z5 z1Ri9ogq=o$g7zr{(lVr+M_UnvP>brRt7jni0SUxIuOlWSXK7G0JtxZfamv{#cr1W= zc(H&P4a7LPHOF>tq6bAZURN0+B8#((?{4J8(wZvc4fqI@5U)l|#ZDyXe_?}yS)8Q# z*G_9sv9OW;nrM8HBRtjA6iOr}3wA^XQ) zndz^nC~Ah|Pd9!7Mst!^!fP>SuL3&3L*%1(NV`q_!Fm8L7t|rk6%bba0n*M#r$!hrv=v9VXLj*ta* z_fD?Zf=mup?4i-TF`i`|4=U{xONVZRtiZsD>|%yh=i57g2zQ8HyMR^Q6IqO8=kV1M zr1(rcDAmlW!{@+M=pma#5ed57vnN=q`GnBL`jbi)NcPZMywtcb~zz>gsB{ zqC$Bq{JVH2^jS(viw=*EM-|W#Te#(;X4Pe3D26w)u_53>i(p!a9cpVQD@r7}5Z*_d(z>uafVX2h48N3=RJ%);-_xg0;kj_)_d9=g zFio!bbU0C9S%4e0B2A5rV?1V}S@y`vdJlYw1^Rxsi`lWF#EJ)x2d zw!jD#;3D0dYmf+Hns+IU;>PJHsgFxTO&3hPiP{*Pd-u@QZ_%($D}QAQ@~WMYkcL4t7m)-7bjz`zEu>ziz|B5*lir-t2Xb z4C`exL|p%47O_OuW$dzt$0DQ-hp@r`Ke=(H4qph2xqtsY4jHgS(ZGAoe-ZS2&jM?< z)z@B^hlp8s?%gwtJ_Mhzy{^=cQ)}~#%!)0v^z}!Y-ogEOm(D$33mnhb%q%`8=Aezu zGGhj3O*Uby(=We3-vTtR1!t=^dtg5TNps`$^zeXtX}y--j0n~3UIu@TLfs_28E}EG zF9y{B45=(HKO9yCHB)M1V{T`|HBm2+&?q$~>fBtt>;Pz=kGFvDk(a+)ZoEZKugGH# zsSAvXvJhzu2o<~=Y>!nN#!Fz z?xoKJot{n4InGfQX@hp5Tf^k^6bT0g#w2biL^#V^FyL z!xpAhaLwJt`=Kn5A~axRD+^5G)W=NS<*h zP&%1fw3SbJzkq;*eXlaMX1zHB8(&y2XAGmD+G6@RSHI>u`**E3IkdFfHK*M8$djtx zjEoG3uae53;=VqpmByEr+&#wvvX1HhAzrZ-&$ z4hc>R6F~+ZAHIqxZh*=8NQ@so+@__~`0?XMOrP>X-h(s&b$$3DBe`FHE&F{dKXH0B zJXDx++yTzha&p7Rc1pV`9!WW{Vhf}o+!4oZzm0XigFphWi~{ZD#h8Z<2?EiR#cP$7s(ocW`Ym<)NX4O&j^=71BvST1f}bkhqYm^VA04>Fd;b67rYnoUT2YD2nh4P%i`V(( zTpVAJ_pQgbA?0>4d8m)N5933axn-n)=}`^QW^VJkkRT2RYsl&Bw2ES@?(H=&Oa_W2Lm*NeTE!Ax z?)oRpjE#MKeCnP=Ng*+n%m<|__&u??9Se4UwhQ&MO)YSiabO_X+6VppkR4(BNjmgj zIPG>EhzlGlq!cL02?-})K!n!ZtSq`X)dhM45UepVF#s0f8;>47d{{`R3bWy=kIo5+ z6iyL(;M5@@l&yre3snS;sDUFSh=247zMf%YXD9M9_}xZB0k43x2!?FXmtkOOKVoV@ zs@l65S&vzph&r6kzU27v@nNVdu0%-VjyG}3ES4UC+!{n*&HyUWtScY>0CtR0w1qSM z)hl2J5RPzuIURo<5qNN~&wiA=Kr3)XNIp1RrVI+*3ZWu~JVWk2GCFnxms5c;C^`+6 zU0YpXPghiKs8g1ps=|CMWKkjp1=^{NGsrI!l}_tlJ+ZKCp&Y~VO)hqPpzi8MS0!uf zlmf3;ZNx-P&^-rca2g#XB?UZ=Kap(iUEK!ExDUb?TtZ!)`odUZ%{8K|4HUf{-+(vF(m2ZQNtmJ*-n|Q*y7P6G333teK{{zPk;(i95DbT0sPR>Fz<-R zd2m>uw49L!doM51jXFV2CTpi%0a}M-S4c<*A}|D~UzL?D8&lfuZ{~$9wc;NmNW$lf zgX|L!P)OEX&x6bel9qiERJLu~Aa>wIedg=$ZvceFgCMF70*C_0&W++pQ?miNOJlOG zxOrUyzO5}sgxzbp;zri$7Prc%uahH`FjcWb)P@71qUx;r$}6@|M@E=G(5nLX*5NNl z&_M`cuBhW~-TG;+2V4#mAvij)6jz4F`V1fwR6{uD9Hi(>@zS)&oHHXSDG5Lku`02K zC-Q+?u?y=Fiyisar^knR5k_&(5W#262>8ra85y}2O&#+O3ko_)AYZJlNE$S>w8+pN z0C+%nmcgg9>^X5_fe>#`*K5s;e4QaQVo=HeZ%Ssl0!R?m{sKfHX$}LwfocQ-L{z9f z6~O@M^fRv20AU7pIHX;UEB9e>l%F%kzCj@!A$t7_JQRSVNKjIb9`TW56mDd#*g_}E z@)8~(Y)F`~lro-QbTH?I)|w2@IPam%tvkiQ);H{O`))QZ5CeZ5wmsRnxs?hp5rSZ@x@ zALIa%kxK_30VVN6Er%3EjtO>wW#Ot*l9E1-pJemh2d)>)-h|H}(pz{jEZpOxY8Nkd z;%ZSym_*zNu~eD*i-S?*8oTEI^ye=%O6g$Tl0x>m@t* z{mk3mCs3umI5%(pDAqhSa~vCMd%}7~W&%0)|*tRW;I({55#NvgzfU z`g)Dg<-gADnyWNi`hwfH*x8t7>L;%jFCJ8`uBKKCJlNegKR;hF_SGk&ESeL74Jx{N zZvsMhY-oTE6UM8ruh(kuz^`!59SWLCniT>Cghv`0!7Pc*%#T-W@f>Cq3?6I=`C0t^ zZ9{Iw6PKP}r1-Ez(PWoT^ztL{F%Zgd5swU^QYD0>AMubYE8WLGutRg#O~*c9XJwtH zQI|__BJ}GB-}~#IVh}1-2FyN`XYdAmd?l5YN=z6B3Ite7SJz@80NkD{OD2zlWE;FZ zR1DY!>^pV{%v>tHv1&D92!wdxr2qmS*yOh~+JzOy&K`n9tVtL3kCj;1UIj;|^-N4< z!1W|tK#g(DKtG#YWlG5LgU?-u>I%tKGDO3LsQi;>hHcdLc|7<_O+EAI@)rgr#W7%} z-skRJe~x1nOR3K;bgtOqqwbul7|-`V^pGEVl@HJaa1`C*Adzy`0GyD2UULo50$hF+ z(V-wCV_=N|ed1wNfE(??Pq44`E(9T2)@_2D-nHcBv^{)R3FDWRnds`4apbQVv)LwGbwU4i?6$C2KSNFUih7{VhgQQFG#{m&6W)n;SzRy8;ZgqQEvI=%5@}w_!s8JrX^M zAok&+Hm+MY*qBPC$yj6A6AdJA0;q%PYHRJG1DJ@h;CYX5fvRkY=)6IHLQPFg;9hCW z;sxS2Gc)52j5DP`^|+MOA_P6NU}`bmcP-BuApXPvMP$gCIt(Cc1xxcopgkNM9l0dz zy75vMlYNnqkrTd5R{O}O|&3clQgMww=KoOnk~hiD5EGZa-mthu@r+grV_z4yDZw; zR@dI!_UfIQ#jgu%d3+A_$4vBX<;bxI!6h$Wg0iG%)g01Gz$wH-liiVX^Pj9^n&m2+ zQlMe4t%lLs0uARI3=92=tBgzeS@94O%y0U08>zXS(%@bvw0Dz89IL=HTMc7LLJ7|w zmbY$yDRNLBmdcsPe7bhZDSkg1$8H+BT&=&4yjU7)>t;6A!v7k!7NLomMEW66`xiNM zhrR5tE4KJAU;N+v1DgZU~|k_Q_) z9b!Lj`CowW@+t$(e6 z(hCDH{Vr%kAAX|D%E}s}M-pe*ig`{dmbj+%YchGMg24d>`Ij%`qkuhT+=qWw4NwQG z%d_R~o2Hz%pU*b$m>Nq&17}Vom zk^Ks9a;|=FNy=&d_bY9G*!tQ7!)mR)UJqT44#-bUf! z5iZxGjlIWPfO;paTJV~Kq7 zD^I7)L^H$mjtWlioHu4v2Q<+3Cnucm=UB?#JkE8Rp+SFsrzzNT@aE4^1v9fbOA%is zipHs7^n>$CWcihK!SMR}OM1z@S+Vr&a4B!w>ZY4?&k2!-2Nyj~o0k}wCD;0_O53zy zxViP6%BcOv#aREsHng?eO61jZIG_JYm0{6kJvSNV(ju+{r3F|>b940Jr~vBJ&A9eV zb6N5~ep6F}G>?7D7GTVKd~#gIuYfE;F92jyVHw7x95%S04mwNC+mW%Wg~?*$M!ip> z*(q!r*0IawTt7zV;&WR6fYXGoqU02{G;{M-hCrKcf9CRh&*Ii0e~hR~9 zC$B1JlA9Xyo>-JbOSff&dUNl0v144!JSx2$8>Lz#5#zbsP_<6*Png;`QeeSS zIVOK}EK2p!iY*$W(%HgXoZh7+kY@51H%!x`yay)Kh5}Nyb0rolu1ei-?Sw>LEF(5P zeJbpZiodl4-SdI{Ty|h7=5YI!^MkcuXmoFam`=mcw5Cb zr0V{v-h6r{pPBy0wPeTnD5|S}q=4R(V~dh^VRrlRJVwXwW-^PWI(EhEe9Xy3dJFB& zx|(q&Qj$r(?g>4aj0)s9kl{)VA*2 znN(B95JaWQzRiGrjrWQzwt-&(z}foEx^Wq2AvkmJ`&FDvWhI`8@Oci`#oCL7&>~`0 zE7S<(|D3a)Cvy0!;67pX-zXeko<&sgvBgI*kK4^%K66f@qiUFS;+o~l)=xFxUSvCW zr*7xk!QG(D)HxK#m>1E%>zzdlk~SMz{dP@qi3-1Te&^$>qmFeIl_s>@i2!=IqjIo+ zYsR#?%gEa)9X|s~;*m=Zfi1OX^GeowIVOxLH}{ZBoh>@!SmplAs}w1#ofC=T?&lmd z;qGNrt>c8~W#Njw=4Ja&eM?8Qs}rt{`WK~=#T6#0Ctg+?6g+g@OIzk^%kN&W;;%Lw zW*P2lI(_eQvElh#lQw{PKYV96!@6(jA|o$xX~siXqv7DC{OR8>D$Gn3D8>Hfn(rIJ zzwfKhg=I5wg=o5i{dLpN)WxlZxxy$c#=m{&=(r3H*2l)qZXNKYswyD?0pzB(t?7^{ zL4E>!8j2+`5uWN4ZDm*PE9wj(;o3(wfiAG5FuH!N<3?FuFPr3>q z)Uw@Mv?=@2vT)~TVf|Apw%|Iw+G&^MrTBYJr;5@`_j(q1m8PY$4_Zn(WqrPqN%ym~ z2q;3G-PWD9#FvniP}^LT5scRac!ZU$Dol_TUfI`^k9Rj@HF+Z z>+ltg_2S9tQ?hdvPiw;uCZ>p98ty#W^lt9Md$9m7_Z;W@@o`1(Hkmg{F&vtYa{7D9 zWK9O^nx#~wQMFGTZ|$RAJu#FSYQf%cvYxMU;8mrNbT}91zRU^@O1bb0bC)}Q1HYMM zmRr(4pD?t#_kttEGUD5cExH;QrL=(^0|UKB_GZ=oLM3z7#8W)Y(~`{24Bf8jWAkK8 zQq;~J&x$%AY|)$2D4{>?98*}T>g+kjx={J4PsMNK^Wdg%l_12^z`f11f?yymIEW)n zyW0uF(g4tcr|0J84&GufL+T-Bs&9KcZlLFpz=Zq78p6p77Etb+?TW6?7G%5Ozt?QF(B05)Rhi&yDgeLc1VbbuxWsxQt@ zo^~sYiZVn8OM3cIaX`q^htUc2lx2dEF>%hmut6q0qxD)!W|O+$=I+i#4>@f!+0(X} z11O)fr%yF=^RMFHmCW9J9dkDL+kX?Mo3mAQq>kzeEf9Vwu(=J7+ZW<|D7GbX+0F z5&DyAHNzISj@kLPd*)S-BpELG`O*@muLCo6#Tj;W?M-5zwW2l2Wm1+4pBizF%O$QN z1G>9y&nEtXN7~*)&NlY;`5tq2CML0kA1uWT3tVb0A8Io_N1>ITDO#qUF9#Csw z1Id~=_VI>XU7gOl11j`Qb23eK(XO**?)*tIHVH3Zz5FsY{cOEih44MM+(lEezq;UI zA-)9s^mF6A09LK2)I&v?ytL6xNAPaB`%dli#nbB|=ck{2g3e4c)Jwwf@M5~>sASdF zVUZInwpe}frj}E^UMi#SB@r!NRZgF~Q}nDVGCx1_>g7iop-X+kf0_=F*&1wkCFiru zd+nBAptaKQqV{zi&!-(ltP7@e=HHXZj6RA+(_?kP`ZBM!KZG@wsDE&uH{35IoVvK! z_wg6%Y*J2vB9krsTddVD{@(PDF@;Kz!Lmgzoo~VyZ`pq^!6n41R6gPTR!nt#-TrN$ zccSC73@xR3il*ZJN96%k!~LG4(PS#aG)TH9RH#8I_!w63#5vb#6Zh?6^*V|NC_Qxi zkY49$VdvyTbSy$h4uzEUn98;a?P-otJwQNO^LdR5tryo0vU_oZxWW~YwZ@nuno zd0LpNqqlSX;%sx{noNsljq7;S1;>9?wuy=A{N3?f3B$cOHH`jj*D3!`ACjXf#R~vk&qutA@>cZ{wyr39Z@NZ{=e-Djwa=`pvju08^U}0rPG&=< z)j+=Ma?M(WG{<@L0-tu5kLwG!vm9;{u$-&))}Nibo6GHeK$hLv(!+V7;Ku6s&oAw6 zt=OWvJ!0anr`dwN?Hv}`VVT)?qqptc5v5i8q(1Y#{7{uk5|>9784(fD)Avm=up0`g zSv|dT5XOG`1f|cX%ZFa39J!(UWCaVl;pV+7y7Ql4kc5y>a$@D1h_lnmFGiNvh&i(6 z+C6OT^*H9r+oV0%g*`iaY-XsGtMun=&;?ZfX1D`y=A+-UvW_s>Yp6F>af#_HyyWAtJLUmTInT(a#Se z*r}X{t*Sa@Xd{TB)=oy*OybF=_=XQN@}kCOx8IMAzU9Vuirj zWKvF$f{H#GeeNj61}-lNEggOSwGJaSKJTV;6VqgV*MH6Be}8?4mVYs~HZhd7<;QP< z?MFr_zyBErd5#%Qkk?G4GTE)anu`y5BK^5S_H9`<2?hMpy~Tx_J8jFe@pJApwi~>_ z;wj%i+oPq}K--#`c&`6!*8RVIhTa|B1NgvTg)^tr|6O|!pZ9NA5#!6N-ZfU8?)YX+ QA#PdW?D;b(a+h!Y53V+p5dZ)H literal 20577 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 From 703224f30e6608c1ed5d336974d8ddd908f2f070 Mon Sep 17 00:00:00 2001 From: Stuart Clements Date: Fri, 6 Sep 2019 13:32:24 +0200 Subject: [PATCH 012/122] Documented that Robo accounts can push/pull helm charts --- docs/img/robotaccount/add_robot_account_2.png | Bin 44951 -> 19196 bytes docs/user_guide.md | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/img/robotaccount/add_robot_account_2.png b/docs/img/robotaccount/add_robot_account_2.png index 40945a989738496bd33a2226857668e4f891593f..951046edfc2dd590e5be9667fcc3cbae5e921380 100644 GIT binary patch literal 19196 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 Date: Mon, 9 Sep 2019 13:31:10 +0800 Subject: [PATCH 013/122] Check the status behind error when trying to update the scan schedule Check the status behind error when trying to update the scan schedule Signed-off-by: Wenkai Yin --- src/common/job/client.go | 42 +++++++++++++++++++- src/common/job/client_test.go | 23 ++++++++++- src/core/api/admin_job.go | 9 +++-- src/replication/operation/controller.go | 21 ++-------- src/replication/operation/controller_test.go | 18 --------- 5 files changed, 71 insertions(+), 42 deletions(-) diff --git a/src/common/job/client.go b/src/common/job/client.go index 01f3c18e2..3c5e060ac 100644 --- a/src/common/job/client.go +++ b/src/common/job/client.go @@ -6,6 +6,7 @@ import ( "fmt" "io/ioutil" "net/http" + "regexp" "strings" commonhttp "github.com/goharbor/harbor/src/common/http" @@ -18,7 +19,9 @@ import ( var ( // GlobalClient is an instance of the default client that can be used globally // Notes: the client needs to be initialized before can be used - GlobalClient Client + GlobalClient Client + statusBehindErrorPattern = "mismatch job status for stopping job: .*, job status (.*) is behind Running" + statusBehindErrorReg = regexp.MustCompile(statusBehindErrorPattern) ) // Client wraps interface to access jobservice. @@ -30,6 +33,21 @@ type Client interface { // TODO Redirect joblog when we see there's memory issue. } +// StatusBehindError represents the error got when trying to stop a success/failed job +type StatusBehindError struct { + status string +} + +// Error returns the detail message about the error +func (s *StatusBehindError) Error() string { + return "status behind error" +} + +// Status returns the current status of the job +func (s *StatusBehindError) Status() string { + return s.status +} + // DefaultClient is the default implementation of Client interface type DefaultClient struct { endpoint string @@ -156,5 +174,25 @@ func (d *DefaultClient) PostAction(uuid, action string) error { }{ Action: action, } - return d.client.Post(url, req) + if err := d.client.Post(url, req); err != nil { + status, flag := isStatusBehindError(err) + if flag { + return &StatusBehindError{ + status: status, + } + } + return err + } + return nil +} + +func isStatusBehindError(err error) (string, bool) { + if err == nil { + return "", false + } + strs := statusBehindErrorReg.FindStringSubmatch(err.Error()) + if len(strs) != 2 { + return "", false + } + return strs[1], true } diff --git a/src/common/job/client_test.go b/src/common/job/client_test.go index 8dd208841..53dfa5fe8 100644 --- a/src/common/job/client_test.go +++ b/src/common/job/client_test.go @@ -1,11 +1,13 @@ package job import ( + "errors" + "os" + "testing" + "github.com/goharbor/harbor/src/common/job/models" "github.com/goharbor/harbor/src/common/job/test" "github.com/stretchr/testify/assert" - "os" - "testing" ) var ( @@ -62,3 +64,20 @@ func TestPostAction(t *testing.T) { err2 := testClient.PostAction(ID, "stop") assert.Nil(err2) } + +func TestIsStatusBehindError(t *testing.T) { + // nil error + status, flag := isStatusBehindError(nil) + assert.False(t, flag) + + // not status behind error + err := errors.New("not status behind error") + status, flag = isStatusBehindError(err) + assert.False(t, flag) + + // status behind error + err = errors.New("mismatch job status for stopping job: 9feedf9933jffs, job status Error is behind Running") + status, flag = isStatusBehindError(err) + assert.True(t, flag) + assert.Equal(t, "Error", status) +} diff --git a/src/core/api/admin_job.go b/src/core/api/admin_job.go index 14bdbcae6..71a486c50 100644 --- a/src/core/api/admin_job.go +++ b/src/core/api/admin_job.go @@ -62,9 +62,12 @@ func (aj *AJAPI) updateSchedule(ajr models.AdminJobReq) { // stop the scheduled job and remove it. if err = utils_core.GetJobServiceClient().PostAction(jobs[0].UUID, common_job.JobActionStop); err != nil { - if e, ok := err.(*common_http.Error); !ok || e.Code != http.StatusNotFound { - aj.SendInternalServerError(err) - return + _, ok := err.(*common_job.StatusBehindError) + if !ok { + if e, ok := err.(*common_http.Error); !ok || e.Code != http.StatusNotFound { + aj.SendInternalServerError(err) + return + } } } diff --git a/src/replication/operation/controller.go b/src/replication/operation/controller.go index ab419f581..11f77acec 100644 --- a/src/replication/operation/controller.go +++ b/src/replication/operation/controller.go @@ -16,7 +16,6 @@ package operation import ( "fmt" - "regexp" "strings" "time" @@ -49,9 +48,7 @@ const ( ) var ( - statusBehindErrorPattern = "mismatch job status for stopping job: .*, job status (.*) is behind Running" - statusBehindErrorReg = regexp.MustCompile(statusBehindErrorPattern) - jobNotFoundErrorMsg = "object is not found" + jobNotFoundErrorMsg = "object is not found" ) // NewController returns a controller implementation @@ -163,8 +160,9 @@ func (c *controller) StopReplication(executionID int64) error { continue } if err = c.scheduler.Stop(task.JobID); err != nil { - status, flag := isStatusBehindError(err) - if flag { + isStatusBehindError, ok := err.(*job.StatusBehindError) + if ok { + status := isStatusBehindError.Status() switch hjob.Status(status) { case hjob.ErrorStatus: status = models.TaskStatusFailed @@ -215,17 +213,6 @@ func isTaskInFinalStatus(task *models.Task) bool { return false } -func isStatusBehindError(err error) (string, bool) { - if err == nil { - return "", false - } - strs := statusBehindErrorReg.FindStringSubmatch(err.Error()) - if len(strs) != 2 { - return "", false - } - return strs[1], true -} - func isJobNotFoundError(err error) bool { if err == nil { return false diff --git a/src/replication/operation/controller_test.go b/src/replication/operation/controller_test.go index 778e9f5ea..9da380c6a 100644 --- a/src/replication/operation/controller_test.go +++ b/src/replication/operation/controller_test.go @@ -15,7 +15,6 @@ package operation import ( - "errors" "io" "os" "testing" @@ -382,20 +381,3 @@ func TestIsTaskRunning(t *testing.T) { assert.Equal(t, c.isFinalStatus, isTaskInFinalStatus(c.task)) } } - -func TestIsStatusBehindError(t *testing.T) { - // nil error - status, flag := isStatusBehindError(nil) - assert.False(t, flag) - - // not status behind error - err := errors.New("not status behind error") - status, flag = isStatusBehindError(err) - assert.False(t, flag) - - // status behind error - err = errors.New("mismatch job status for stopping job: 9feedf9933jffs, job status Error is behind Running") - status, flag = isStatusBehindError(err) - assert.True(t, flag) - assert.Equal(t, "Error", status) -} From 537a501b491388b86977e9e0fee9cc5fec1c9e92 Mon Sep 17 00:00:00 2001 From: Yogi_Wang Date: Mon, 9 Sep 2019 14:00:50 +0800 Subject: [PATCH 014/122] Add page routing permission to prevent refresh from entering the error page Signed-off-by: Yogi_Wang --- src/portal/src/app/harbor-routing.module.ts | 106 ++++++++++++++---- .../project-detail.component.ts | 1 + ...ember-permission-guard-activate.service.ts | 56 +++++++++ src/portal/src/app/shared/shared.module.ts | 6 +- 4 files changed, 147 insertions(+), 22 deletions(-) create mode 100644 src/portal/src/app/shared/route/member-permission-guard-activate.service.ts diff --git a/src/portal/src/app/harbor-routing.module.ts b/src/portal/src/app/harbor-routing.module.ts index 662b51fe9..df4180392 100644 --- a/src/portal/src/app/harbor-routing.module.ts +++ b/src/portal/src/app/harbor-routing.module.ts @@ -1,13 +1,13 @@ // Copyright Project Harbor Authors // -// Licensed under the Apache License, Version 2.0 (the "License"); +// Licensed 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, +// 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. @@ -18,6 +18,7 @@ import { SystemAdminGuard } from './shared/route/system-admin-activate.service'; import { AuthCheckGuard } from './shared/route/auth-user-activate.service'; import { SignInGuard } from './shared/route/sign-in-guard-activate.service'; import { MemberGuard } from './shared/route/member-guard-activate.service'; +import { MemberPermissionGuard } from './shared/route/member-permission-guard-activate.service'; import { OidcGuard } from './shared/route/oidc-guard-active.service'; import { PageNotFoundComponent } from './shared/not-found/not-found.component'; @@ -50,7 +51,7 @@ import { ProjectDetailComponent } from './project/project-detail/project-detail. import { MemberComponent } from './project/member/member.component'; import { RobotAccountComponent } from './project/robot-account/robot-account.component'; import { WebhookComponent } from './project/webhook/webhook.component'; -import { ProjectLabelComponent } from "./project/project-label/project-label.component"; +import { ProjectLabelComponent } from './project/project-label/project-label.component'; import { ProjectConfigComponent } from './project/project-config/project-config.component'; import { ProjectRoutingResolver } from './project/project-routing-resolver.service'; import { ListChartsComponent } from './project/helm-chart/list-charts.component'; @@ -59,8 +60,8 @@ import { HelmChartDetailComponent } from './project/helm-chart/helm-chart-detail import { OidcOnboardComponent } from './oidc-onboard/oidc-onboard.component'; import { LicenseComponent } from './license/license.component'; import { SummaryComponent } from './project/summary/summary.component'; -import { TagRetentionComponent } from "./project/tag-retention/tag-retention.component"; - +import { TagRetentionComponent } from './project/tag-retention/tag-retention.component'; +import { USERSTATICPERMISSION } from '@harbor/ui'; const harborRoutes: Routes = [ { path: '', redirectTo: 'harbor', pathMatch: 'full' }, @@ -81,7 +82,7 @@ const harborRoutes: Routes = [ { path: 'harbor/sign-in', component: SignInComponent, - canActivate: [ SignInGuard] + canActivate: [SignInGuard] }, { path: 'harbor', @@ -117,13 +118,13 @@ const harborRoutes: Routes = [ path: 'replications', component: TotalReplicationPageComponent, canActivate: [SystemAdminGuard], - canActivateChild: [SystemAdminGuard], + canActivateChild: [SystemAdminGuard] }, { path: 'replications/:id/:tasks', component: ReplicationTasksPageComponent, canActivate: [SystemAdminGuard], - canActivateChild: [SystemAdminGuard], + canActivateChild: [SystemAdminGuard] }, { path: 'tags/:id/:repo', @@ -148,7 +149,7 @@ const harborRoutes: Routes = [ canActivate: [MemberGuard], resolve: { projectResolver: ProjectRoutingResolver - }, + } }, { path: 'projects/:id/helm-charts/:chart/versions', @@ -156,7 +157,7 @@ const harborRoutes: Routes = [ canActivate: [MemberGuard], resolve: { projectResolver: ProjectRoutingResolver - }, + } }, { path: 'projects/:id/helm-charts/:chart/versions/:version', @@ -164,60 +165,127 @@ const harborRoutes: Routes = [ canActivate: [MemberGuard], resolve: { projectResolver: ProjectRoutingResolver - }, + } }, { path: 'projects/:id', component: ProjectDetailComponent, canActivate: [MemberGuard], + canActivateChild: [MemberPermissionGuard], resolve: { projectResolver: ProjectRoutingResolver }, children: [ { path: 'summary', + data: { + permissionParam: { + resource: USERSTATICPERMISSION.PROJECT.KEY, + action: USERSTATICPERMISSION.PROJECT.VALUE.READ + } + }, component: SummaryComponent }, { path: 'repositories', - component: RepositoryPageComponent + data: { + permissionParam: { + resource: USERSTATICPERMISSION.REPOSITORY.KEY, + action: USERSTATICPERMISSION.REPOSITORY.VALUE.LIST + } + }, + component: RepositoryPageComponent, }, { path: 'helm-charts', + data: { + permissionParam: { + resource: USERSTATICPERMISSION.HELM_CHART.KEY, + action: USERSTATICPERMISSION.HELM_CHART.VALUE.LIST + } + }, component: ListChartsComponent }, { path: 'repositories/:repo/tags', - component: TagRepositoryComponent, + data: { + permissionParam: { + resource: USERSTATICPERMISSION.REPOSITORY.KEY, + action: USERSTATICPERMISSION.REPOSITORY.VALUE.LIST + } + }, + component: TagRepositoryComponent }, { path: 'members', + data: { + permissionParam: { + resource: USERSTATICPERMISSION.MEMBER.KEY, + action: USERSTATICPERMISSION.MEMBER.VALUE.LIST + } + }, component: MemberComponent }, { path: 'logs', + data: { + permissionParam: { + resource: USERSTATICPERMISSION.LOG.KEY, + action: USERSTATICPERMISSION.LOG.VALUE.LIST + } + }, component: AuditLogComponent }, { path: 'labels', + data: { + permissionParam: { + resource: USERSTATICPERMISSION.LABEL.KEY, + action: USERSTATICPERMISSION.LABEL.VALUE.CREATE + } + }, component: ProjectLabelComponent }, { path: 'configs', + data: { + permissionParam: { + resource: USERSTATICPERMISSION.CONFIGURATION.KEY, + action: USERSTATICPERMISSION.CONFIGURATION.VALUE.READ + } + }, component: ProjectConfigComponent }, { path: 'robot-account', + data: { + permissionParam: { + resource: USERSTATICPERMISSION.ROBOT.KEY, + action: USERSTATICPERMISSION.ROBOT.VALUE.LIST + } + }, component: RobotAccountComponent }, { path: 'tag-retention', + data: { + permissionParam: { + resource: USERSTATICPERMISSION.TAG_RETENTION.KEY, + action: USERSTATICPERMISSION.TAG_RETENTION.VALUE.READ + } + }, component: TagRetentionComponent }, { path: 'webhook', + data: { + permissionParam: { + resource: USERSTATICPERMISSION.WEBHOOK.KEY, + action: USERSTATICPERMISSION.WEBHOOK.VALUE.LIST + } + }, component: WebhookComponent - }, + } ] }, { @@ -239,19 +307,17 @@ const harborRoutes: Routes = [ path: 'registry', component: DestinationPageComponent, canActivate: [SystemAdminGuard], - canActivateChild: [SystemAdminGuard], + canActivateChild: [SystemAdminGuard] } ] }, - { path: "**", component: PageNotFoundComponent } + { path: '**', component: PageNotFoundComponent } ]; @NgModule({ imports: [ - RouterModule.forRoot(harborRoutes, {onSameUrlNavigation: 'reload'}) + RouterModule.forRoot(harborRoutes, { onSameUrlNavigation: 'reload' }) ], exports: [RouterModule] }) -export class HarborRoutingModule { - -} +export class HarborRoutingModule {} diff --git a/src/portal/src/app/project/project-detail/project-detail.component.ts b/src/portal/src/app/project/project-detail/project-detail.component.ts index 8fdc749c5..edffad952 100644 --- a/src/portal/src/app/project/project-detail/project-detail.component.ts +++ b/src/portal/src/app/project/project-detail/project-detail.component.ts @@ -89,6 +89,7 @@ export class ProjectDetailComponent implements OnInit { USERSTATICPERMISSION.TAG_RETENTION.KEY, USERSTATICPERMISSION.TAG_RETENTION.VALUE.READ)); permissionsList.push(this.userPermissionService.getPermission(projectId, USERSTATICPERMISSION.WEBHOOK.KEY, USERSTATICPERMISSION.WEBHOOK.VALUE.LIST)); + forkJoin(...permissionsList).subscribe(Rules => { [this.hasProjectReadPermission, this.hasLogListPermission, this.hasConfigurationListPermission, this.hasMemberListPermission , this.hasLabelListPermission, this.hasRepositoryListPermission, this.hasHelmChartsListPermission, this.hasRobotListPermission diff --git a/src/portal/src/app/shared/route/member-permission-guard-activate.service.ts b/src/portal/src/app/shared/route/member-permission-guard-activate.service.ts new file mode 100644 index 000000000..3717b1b5e --- /dev/null +++ b/src/portal/src/app/shared/route/member-permission-guard-activate.service.ts @@ -0,0 +1,56 @@ +import { Injectable } from "@angular/core"; +import { + CanActivate, + Router, + ActivatedRouteSnapshot, + RouterStateSnapshot, + CanActivateChild, +} from "@angular/router"; +import { + UserPrivilegeServeItem, + UserPermissionService, + ErrorHandler, + CommonRoutes +} from "@harbor/ui"; +import { Observable } from "rxjs"; + +@Injectable() +export class MemberPermissionGuard implements CanActivate, CanActivateChild { + constructor( + private router: Router, + private errorHandler: ErrorHandler, + private userPermission: UserPermissionService + ) {} + + canActivate( + route: ActivatedRouteSnapshot, + state: RouterStateSnapshot + ): Observable | boolean { + const projectId = route.parent.params["id"]; + const permission = route.data.permissionParam as UserPrivilegeServeItem; + return new Observable(observer => { + this.userPermission + .getPermission(projectId, permission.resource, permission.action) + .subscribe( + permissionRouter => { + if (!permissionRouter) { + this.router.navigate([CommonRoutes.HARBOR_DEFAULT]); + } + observer.next(permissionRouter); + }, + error => { + this.router.navigate([CommonRoutes.HARBOR_DEFAULT]); + observer.next(false); + this.errorHandler.error(error); + } + ); + }); + } + + canActivateChild( + route: ActivatedRouteSnapshot, + state: RouterStateSnapshot + ): Observable | boolean { + return this.canActivate(route, state); + } +} diff --git a/src/portal/src/app/shared/shared.module.ts b/src/portal/src/app/shared/shared.module.ts index 9cb09394e..20f25d2f5 100644 --- a/src/portal/src/app/shared/shared.module.ts +++ b/src/portal/src/app/shared/shared.module.ts @@ -14,7 +14,7 @@ import { NgModule } from "@angular/core"; import { RouterModule } from "@angular/router"; import { TranslateModule } from "@ngx-translate/core"; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { CookieService } from "ngx-cookie"; import { IServiceConfig, @@ -33,6 +33,7 @@ import { AuthCheckGuard } from "./route/auth-user-activate.service"; import { SignInGuard } from "./route/sign-in-guard-activate.service"; import { SystemAdminGuard } from "./route/system-admin-activate.service"; import { MemberGuard } from "./route/member-guard-activate.service"; +import { MemberPermissionGuard } from "./route/member-permission-guard-activate.service"; import { OidcGuard } from "./route/oidc-guard-active.service"; import { LeavingRepositoryRouteDeactivate } from "./route/leaving-repository-deactivate.service"; @@ -52,7 +53,7 @@ import { GaugeComponent } from "./gauge/gauge.component"; import { ConfirmationDialogComponent } from "./confirmation-dialog/confirmation-dialog.component"; import { ConfirmationDialogService } from "./confirmation-dialog/confirmation-dialog.service"; import { MessageHandlerService } from "./message-handler/message-handler.service"; -import { ListChartVersionRoComponent } from './list-chart-version-ro/list-chart-version-ro.component'; +import { ListChartVersionRoComponent } from "./list-chart-version-ro/list-chart-version-ro.component"; const uiLibConfig: IServiceConfig = { enablei18Support: true, @@ -141,6 +142,7 @@ const uiLibConfig: IServiceConfig = { SignInGuard, LeavingRepositoryRouteDeactivate, MemberGuard, + MemberPermissionGuard, OidcGuard, MessageHandlerService, StatisticHandler From ca8590c878dbfac90bddd7051eaf6c31e8c43687 Mon Sep 17 00:00:00 2001 From: "Danfeng Liu (c)" Date: Mon, 9 Sep 2019 11:52:56 +0800 Subject: [PATCH 015/122] Replace CVE sample image from other to redis in union, redis is stable in relative, so test result will be stable relatively Signed-off-by: Danfeng Liu (c) --- .../Harbor-Pages/Configuration.robot | 5 +++-- tests/robot-cases/Group1-Nightly/Clair.robot | 22 +++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/tests/resources/Harbor-Pages/Configuration.robot b/tests/resources/Harbor-Pages/Configuration.robot index 76bc1bd73..2941ecaa0 100644 --- a/tests/resources/Harbor-Pages/Configuration.robot +++ b/tests/resources/Harbor-Pages/Configuration.robot @@ -309,6 +309,7 @@ Add Items To System CVE Whitelist Retry Element Click ${config_system_save_button_xpath} Delete Top Item In System CVE Whitelist - [Arguments] - Retry Element Click ${configuration_system_wl_delete_a_cve_id_icon} + [Arguments] ${count}=1 + :FOR ${idx} IN RANGE 1 ${count} + \ Retry Element Click ${configuration_system_wl_delete_a_cve_id_icon} Retry Element Click ${config_system_save_button_xpath} \ No newline at end of file diff --git a/tests/robot-cases/Group1-Nightly/Clair.robot b/tests/robot-cases/Group1-Nightly/Clair.robot index a4ffd31ee..e5766c983 100644 --- a/tests/robot-cases/Group1-Nightly/Clair.robot +++ b/tests/robot-cases/Group1-Nightly/Clair.robot @@ -148,15 +148,16 @@ Test Case - Verfiy System Level CVE Whitelist [Tags] run-once Init Chrome Driver ${d}= Get Current Date result_format=%m%s - ${image}= Set Variable postgres - ${sha256}= Set Variable 68b49a280d2fbe9330c0031970ebb72015e1272dfa25f0ed7557514f9e5ad7b7 + ${image}= Set Variable redis + #version redis: + ${sha256}= Set Variable 9755880356c4ced4ff7745bafe620f0b63dd17747caedba72504ef7bac882089 ${signin_user}= Set Variable user025 ${signin_pwd}= Set Variable Test1@34 Sign In Harbor ${HARBOR_URL} ${signin_user} ${signin_pwd} Create An New Project project${d} Push Image ${ip} ${signin_user} ${signin_pwd} project${d} ${image} sha256=${sha256} tag=${sha256} Go Into Project project${d} - Set Vulnerabilty Serverity 0 + Set Vulnerabilty Serverity 1 Cannot Pull image ${ip} ${signin_user} ${signin_pwd} project${d} ${image} tag=${sha256} Go Into Project project${d} Go Into Repo project${d}/${image} @@ -165,11 +166,11 @@ Test Case - Verfiy System Level CVE Whitelist Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} Switch To Configure Switch To Configuration System Setting - Add Items To System CVE Whitelist CVE-2019-12900\nCVE-2017-14062\nCVE-2019-11068\nCVE-2016-9427\nCVE-2018-6551\nCVE-2018-1000001\nCVE-2018-6485\nCVE-2019-9169\nCVE-2016-2779\nCVE-2019-13917\nCVE-2017-12424 + Add Items To System CVE Whitelist CVE-2019-12904\nCVE-2011-3389\nCVE-2018-12886\nCVE-2019-3843\nCVE-2018-20839 Cannot Pull image ${ip} ${signin_user} ${signin_pwd} project${d} ${image} tag=${sha256} - Add Items To System CVE Whitelist CVE-2019-8457 + Add Items To System CVE Whitelist CVE-2019-3844 Pull Image ${ip} ${signin_user} ${signin_pwd} project${d} ${image} tag=${sha256} - Delete Top Item In System CVE Whitelist + Delete Top Item In System CVE Whitelist count=6 Cannot Pull image ${ip} ${signin_user} ${signin_pwd} project${d} ${image} tag=${sha256} Close Browser @@ -204,21 +205,20 @@ Test Case - Verfiy Project Level CVE Whitelist By Quick Way of Add System [Tags] run-once Init Chrome Driver ${d}= Get Current Date result_format=%m%s - #Image for test: haproxy:1.5 - ${image}= Set Variable haproxy - ${sha256}= Set Variable eca4db0f144d40554e97d000a414a0535720e5d6e559731860558676a57529f8 + ${image}= Set Variable redis + ${sha256}= Set Variable 9755880356c4ced4ff7745bafe620f0b63dd17747caedba72504ef7bac882089 ${signin_user}= Set Variable user025 ${signin_pwd}= Set Variable Test1@34 Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} Switch To Configure Switch To Configuration System Setting - Add Items To System CVE Whitelist CVE-2016-2779\nCVE-2017-12424\nCVE-2018-6551\nCVE-2019-9169\nCVE-2018-6485\nCVE-2018-1000001\nCVE-2019-12900 + Add Items To System CVE Whitelist CVE-2019-12904\nCVE-2011-3389\nCVE-2018-12886\nCVE-2019-3843\nCVE-2018-20839\nCVE-2019-3844 Logout Harbor Sign In Harbor ${HARBOR_URL} ${signin_user} ${signin_pwd} Create An New Project project${d} Push Image ${ip} ${signin_user} ${signin_pwd} project${d} ${image} sha256=${sha256} tag=${sha256} Go Into Project project${d} - Set Vulnerabilty Serverity 0 + Set Vulnerabilty Serverity 1 Go Into Project project${d} Go Into Repo project${d}/${image} Scan Repo ${sha256} Succeed From ea5c27fcd5964560df67a855a93046f485bf2cf2 Mon Sep 17 00:00:00 2001 From: DQ Date: Thu, 5 Sep 2019 14:31:26 +0800 Subject: [PATCH 016/122] Enhance: Upgrade encrypt alg to sha256 previous sha1 will still used for old password Signed-off-by: DQ --- .../postgresql/0010_1.9.0_schema.up.sql | 4 +- src/common/dao/dao_test.go | 14 +++++- src/common/dao/register.go | 6 +-- src/common/dao/user.go | 48 ++++++++++++------- src/common/models/user.go | 17 +++---- src/common/utils/encrypt.go | 22 +++++++-- src/common/utils/test/database.go | 1 - src/common/utils/utils_test.go | 20 ++++++-- src/core/api/user.go | 16 ++++--- src/core/controllers/base.go | 10 ++-- 10 files changed, 105 insertions(+), 53 deletions(-) diff --git a/make/migrations/postgresql/0010_1.9.0_schema.up.sql b/make/migrations/postgresql/0010_1.9.0_schema.up.sql index 5ca2c39f2..709f529cf 100644 --- a/make/migrations/postgresql/0010_1.9.0_schema.up.sql +++ b/make/migrations/postgresql/0010_1.9.0_schema.up.sql @@ -185,4 +185,6 @@ create table notification_policy ( ALTER TABLE replication_task ADD COLUMN status_revision int DEFAULT 0; DELETE FROM project_metadata WHERE deleted = TRUE; -ALTER TABLE project_metadata DROP COLUMN deleted; \ No newline at end of file +ALTER TABLE project_metadata DROP COLUMN deleted; +ALTER TABLE harbor_user ADD COLUMN password_version varchar(16) Default 'sha256'; +UPDATE harbor_user SET password_version = 'sha1'; diff --git a/src/common/dao/dao_test.go b/src/common/dao/dao_test.go index bc070245a..1725fdab4 100644 --- a/src/common/dao/dao_test.go +++ b/src/common/dao/dao_test.go @@ -324,7 +324,12 @@ func TestResetUserPassword(t *testing.T) { t.Errorf("Error occurred in UpdateUserResetUuid: %v", err) } - err = ResetUserPassword(models.User{UserID: currentUser.UserID, Password: "HarborTester12345", ResetUUID: uuid, Salt: currentUser.Salt}) + err = ResetUserPassword( + models.User{ + UserID: currentUser.UserID, + PasswordVersion: utils.SHA256, + ResetUUID: uuid, + Salt: currentUser.Salt}, "HarborTester12345") if err != nil { t.Errorf("Error occurred in ResetUserPassword: %v", err) } @@ -346,7 +351,12 @@ func TestChangeUserPassword(t *testing.T) { t.Errorf("Error occurred when get user salt") } currentUser.Salt = query.Salt - err = ChangeUserPassword(models.User{UserID: currentUser.UserID, Password: "NewHarborTester12345", Salt: currentUser.Salt}) + err = ChangeUserPassword( + models.User{ + UserID: currentUser.UserID, + Password: "NewHarborTester12345", + PasswordVersion: utils.SHA256, + Salt: currentUser.Salt}) if err != nil { t.Errorf("Error occurred in ChangeUserPassword: %v", err) } diff --git a/src/common/dao/register.go b/src/common/dao/register.go index 7f3062153..fa6a8ac91 100644 --- a/src/common/dao/register.go +++ b/src/common/dao/register.go @@ -29,10 +29,10 @@ func Register(user models.User) (int64, error) { now := time.Now() salt := utils.GenerateRandomString() sql := `insert into harbor_user - (username, password, realname, email, comment, salt, sysadmin_flag, creation_time, update_time) - values (?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING user_id` + (username, password, password_version, realname, email, comment, salt, sysadmin_flag, creation_time, update_time) + values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING user_id` var userID int64 - err := o.Raw(sql, user.Username, utils.Encrypt(user.Password, salt), user.Realname, user.Email, + err := o.Raw(sql, user.Username, utils.Encrypt(user.Password, salt, utils.SHA256), utils.SHA256, user.Realname, user.Email, user.Comment, salt, user.HasAdminRole, now, now).QueryRow(&userID) if err != nil { return 0, err diff --git a/src/common/dao/user.go b/src/common/dao/user.go index 535887b1e..0417b44ab 100644 --- a/src/common/dao/user.go +++ b/src/common/dao/user.go @@ -23,7 +23,6 @@ import ( "github.com/goharbor/harbor/src/common/models" "github.com/goharbor/harbor/src/common/utils" - "github.com/goharbor/harbor/src/common/utils/log" ) @@ -32,7 +31,7 @@ func GetUser(query models.User) (*models.User, error) { o := GetOrmer() - sql := `select user_id, username, password, email, realname, comment, reset_uuid, salt, + sql := `select user_id, username, password, password_version, email, realname, comment, reset_uuid, salt, sysadmin_flag, creation_time, update_time from harbor_user u where deleted = false ` @@ -76,9 +75,9 @@ func GetUser(query models.User) (*models.User, error) { // LoginByDb is used for user to login with database auth mode. func LoginByDb(auth models.AuthModel) (*models.User, error) { + var users []models.User o := GetOrmer() - var users []models.User n, err := o.Raw(`select * from harbor_user where (username = ? or email = ?) and deleted = false`, auth.Principal, auth.Principal).QueryRows(&users) if err != nil { @@ -90,12 +89,10 @@ func LoginByDb(auth models.AuthModel) (*models.User, error) { user := users[0] - if user.Password != utils.Encrypt(auth.Password, user.Salt) { + if !matchPassword(&user, auth.Password) { return nil, nil } - user.Password = "" // do not return the password - return &user, nil } @@ -165,23 +162,34 @@ func ToggleUserAdminRole(userID int, hasAdmin bool) error { func ChangeUserPassword(u models.User) error { u.UpdateTime = time.Now() u.Salt = utils.GenerateRandomString() - u.Password = utils.Encrypt(u.Password, u.Salt) - _, err := GetOrmer().Update(&u, "Password", "Salt", "UpdateTime") + u.Password = utils.Encrypt(u.Password, u.Salt, utils.SHA256) + var err error + if u.PasswordVersion == utils.SHA1 { + u.PasswordVersion = utils.SHA256 + _, err = GetOrmer().Update(&u, "Password", "PasswordVersion", "Salt", "UpdateTime") + } else { + _, err = GetOrmer().Update(&u, "Password", "Salt", "UpdateTime") + } return err } // ResetUserPassword ... -func ResetUserPassword(u models.User) error { - o := GetOrmer() - r, err := o.Raw(`update harbor_user set password=?, reset_uuid=? where reset_uuid=?`, utils.Encrypt(u.Password, u.Salt), "", u.ResetUUID).Exec() +func ResetUserPassword(u models.User, rawPassword string) error { + var rowsAffected int64 + var err error + u.UpdateTime = time.Now() + u.Password = utils.Encrypt(rawPassword, u.Salt, utils.SHA256) + u.ResetUUID = "" + if u.PasswordVersion == utils.SHA1 { + u.PasswordVersion = utils.SHA256 + rowsAffected, err = GetOrmer().Update(&u, "Password", "PasswordVersion", "ResetUUID", "UpdateTime") + } else { + rowsAffected, err = GetOrmer().Update(&u, "Password", "ResetUUID", "UpdateTime") + } if err != nil { return err } - count, err := r.RowsAffected() - if err != nil { - return err - } - if count == 0 { + if rowsAffected == 0 { return errors.New("no record be changed, reset password failed") } return nil @@ -282,3 +290,11 @@ func CleanUser(id int64) error { } return nil } + +// MatchPassword returns true is password matched +func matchPassword(u *models.User, password string) bool { + if u.Password != utils.Encrypt(password, u.Salt, u.PasswordVersion) { + return false + } + return true +} diff --git a/src/common/models/user.go b/src/common/models/user.go index c4299869f..c47ad03b8 100644 --- a/src/common/models/user.go +++ b/src/common/models/user.go @@ -23,14 +23,15 @@ const UserTable = "harbor_user" // User holds the details of a user. type User struct { - UserID int `orm:"pk;auto;column(user_id)" json:"user_id"` - Username string `orm:"column(username)" json:"username"` - Email string `orm:"column(email)" json:"email"` - Password string `orm:"column(password)" json:"password"` - Realname string `orm:"column(realname)" json:"realname"` - Comment string `orm:"column(comment)" json:"comment"` - Deleted bool `orm:"column(deleted)" json:"deleted"` - Rolename string `orm:"-" json:"role_name"` + UserID int `orm:"pk;auto;column(user_id)" json:"user_id"` + Username string `orm:"column(username)" json:"username"` + Email string `orm:"column(email)" json:"email"` + Password string `orm:"column(password)" json:"password"` + PasswordVersion string `orm:"column(password_version)" json:"password_version"` + Realname string `orm:"column(realname)" json:"realname"` + Comment string `orm:"column(comment)" json:"comment"` + Deleted bool `orm:"column(deleted)" json:"deleted"` + Rolename string `orm:"-" json:"role_name"` // if this field is named as "RoleID", beego orm can not map role_id // to it. Role int `orm:"-" json:"role_id"` diff --git a/src/common/utils/encrypt.go b/src/common/utils/encrypt.go index 473880843..e68da9430 100644 --- a/src/common/utils/encrypt.go +++ b/src/common/utils/encrypt.go @@ -19,25 +19,37 @@ import ( "crypto/cipher" "crypto/rand" "crypto/sha1" + "crypto/sha256" "encoding/base64" "errors" "fmt" + "hash" "io" "strings" "golang.org/x/crypto/pbkdf2" ) -// Encrypt encrypts the content with salt -func Encrypt(content string, salt string) string { - return fmt.Sprintf("%x", pbkdf2.Key([]byte(content), []byte(salt), 4096, 16, sha1.New)) -} - const ( // EncryptHeaderV1 ... EncryptHeaderV1 = "" + // SHA1 is the name of sha1 hash alg + SHA1 = "sha1" + // SHA256 is the name of sha256 hash alg + SHA256 = "sha256" ) +// HashAlg used to get correct alg for hash +var HashAlg = map[string]func() hash.Hash{ + SHA1: sha1.New, + SHA256: sha256.New, +} + +// Encrypt encrypts the content with salt +func Encrypt(content string, salt string, encrptAlg string) string { + return fmt.Sprintf("%x", pbkdf2.Key([]byte(content), []byte(salt), 4096, 16, HashAlg[encrptAlg])) +} + // ReversibleEncrypt encrypts the str with aes/base64 func ReversibleEncrypt(str, key string) (string, error) { keyBytes := []byte(key) diff --git a/src/common/utils/test/database.go b/src/common/utils/test/database.go index 560c950b7..970109b51 100644 --- a/src/common/utils/test/database.go +++ b/src/common/utils/test/database.go @@ -89,7 +89,6 @@ func updateUserInitialPassword(userID int, password string) error { if err != nil { return fmt.Errorf("Failed to update user encrypted password, userID: %d, err: %v", userID, err) } - } else { } return nil } diff --git a/src/common/utils/utils_test.go b/src/common/utils/utils_test.go index 437f16152..b81da95ed 100644 --- a/src/common/utils/utils_test.go +++ b/src/common/utils/utils_test.go @@ -17,6 +17,7 @@ package utils import ( "encoding/base64" "net/http/httptest" + "reflect" "strconv" "strings" "testing" @@ -91,12 +92,21 @@ func TestParseRepository(t *testing.T) { } func TestEncrypt(t *testing.T) { - content := "content" - salt := "salt" - result := Encrypt(content, salt) + tests := map[string]struct { + content string + salt string + alg string + want string + }{ + "sha1 test": {content: "content", salt: "salt", alg: SHA1, want: "dc79e76c88415c97eb089d9cc80b4ab0"}, + "sha256 test": {content: "content", salt: "salt", alg: SHA256, want: "83d3d6f3e7cacb040423adf7ced63d21"}, + } - if result != "dc79e76c88415c97eb089d9cc80b4ab0" { - t.Errorf("unexpected result: %s != %s", result, "dc79e76c88415c97eb089d9cc80b4ab0") + for name, tc := range tests { + got := Encrypt(tc.content, tc.salt, tc.alg) + if !reflect.DeepEqual(tc.want, got) { + t.Errorf("%s: expected: %v, got: %v", name, tc.want, got) + } } } diff --git a/src/core/api/user.go b/src/core/api/user.go index a58095983..eef99a999 100644 --- a/src/core/api/user.go +++ b/src/core/api/user.go @@ -17,6 +17,10 @@ package api import ( "errors" "fmt" + "net/http" + "regexp" + "strconv" + "github.com/goharbor/harbor/src/common" "github.com/goharbor/harbor/src/common/dao" "github.com/goharbor/harbor/src/common/models" @@ -25,9 +29,6 @@ import ( "github.com/goharbor/harbor/src/common/utils" "github.com/goharbor/harbor/src/common/utils/log" "github.com/goharbor/harbor/src/core/config" - "net/http" - "regexp" - "strconv" ) // UserAPI handles request to /api/users/{} @@ -416,20 +417,21 @@ func (ua *UserAPI) ChangePassword() { return } if changePwdOfOwn { - if user.Password != utils.Encrypt(req.OldPassword, user.Salt) { + if user.Password != utils.Encrypt(req.OldPassword, user.Salt, user.PasswordVersion) { log.Info("incorrect old_password") ua.SendForbiddenError(errors.New("incorrect old_password")) return } } - if user.Password == utils.Encrypt(req.NewPassword, user.Salt) { + if user.Password == utils.Encrypt(req.NewPassword, user.Salt, user.PasswordVersion) { ua.SendBadRequestError(errors.New("the new password can not be same with the old one")) return } updatedUser := models.User{ - UserID: ua.userID, - Password: req.NewPassword, + UserID: ua.userID, + Password: req.NewPassword, + PasswordVersion: user.PasswordVersion, } if err = dao.ChangeUserPassword(updatedUser); err != nil { ua.SendInternalServerError(fmt.Errorf("failed to change password of user %d: %v", ua.userID, err)) diff --git a/src/core/controllers/base.go b/src/core/controllers/base.go index 9dd0f18a2..301dba41f 100644 --- a/src/core/controllers/base.go +++ b/src/core/controllers/base.go @@ -17,7 +17,6 @@ package controllers import ( "bytes" "context" - "github.com/goharbor/harbor/src/core/filter" "html/template" "net" "net/http" @@ -26,6 +25,8 @@ import ( "strconv" "strings" + "github.com/goharbor/harbor/src/core/filter" + "github.com/astaxie/beego" "github.com/beego/i18n" "github.com/goharbor/harbor/src/common" @@ -252,11 +253,10 @@ func (cc *CommonController) ResetPassword() { cc.CustomAbort(http.StatusForbidden, http.StatusText(http.StatusForbidden)) } - password := cc.GetString("password") + rawPassword := cc.GetString("password") - if password != "" { - user.Password = password - err = dao.ResetUserPassword(*user) + if rawPassword != "" { + err = dao.ResetUserPassword(*user, rawPassword) if err != nil { log.Errorf("Error occurred in ResetUserPassword: %v", err) cc.CustomAbort(http.StatusInternalServerError, "Internal error.") From 026f3f478235e0da0faeb428426cae1dd14b95db Mon Sep 17 00:00:00 2001 From: sshijun Date: Tue, 10 Sep 2019 16:11:10 +0800 Subject: [PATCH 017/122] change button text from "ADD SYSTEM" to "COPY FROM SYSTEM" in project config page Signed-off-by: sshijun --- .../project-policy-config.component.html | 4 ++-- .../project-policy-config.component.scss | 6 +++--- src/portal/src/i18n/lang/en-us-lang.json | 4 ++-- src/portal/src/i18n/lang/es-es-lang.json | 4 ++-- src/portal/src/i18n/lang/fr-fr-lang.json | 4 ++-- src/portal/src/i18n/lang/pt-br-lang.json | 4 ++-- src/portal/src/i18n/lang/zh-cn-lang.json | 4 ++-- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/portal/lib/src/project-policy-config/project-policy-config.component.html b/src/portal/lib/src/project-policy-config/project-policy-config.component.html index 8d5e69f81..5c44d51d7 100644 --- a/src/portal/lib/src/project-policy-config/project-policy-config.component.html +++ b/src/portal/lib/src/project-policy-config/project-policy-config.component.html @@ -99,7 +99,7 @@ - -
-
- -
- -
-
- -
+ + + + + + + + + + + + {{ 'DESTINATION.NAME_IS_REQUIRED' | translate }} + + + + + + + + +
+ +
+
+ +
-
- -
- - -
- -
- - -
- -
- - +
+ + {{ 'DESTINATION.URL_IS_REQUIRED' | translate }} +
- -
- - +
+ + + + + + +
+ +
+
+ + + + +
- -
- - - - - -
- -
- - +
+ + +
-
- - -
-
+ + + + + +
+ + +
\ No newline at end of file diff --git a/src/portal/lib/src/create-edit-endpoint/create-edit-endpoint.component.ts b/src/portal/lib/src/create-edit-endpoint/create-edit-endpoint.component.ts index 28d7624e4..b02b6feef 100644 --- a/src/portal/lib/src/create-edit-endpoint/create-edit-endpoint.component.ts +++ b/src/portal/lib/src/create-edit-endpoint/create-edit-endpoint.component.ts @@ -63,13 +63,13 @@ export class CreateEditEndpointComponent selectedType: string; initVal: Endpoint; targetForm: NgForm; - @ViewChild("targetForm") currentForm: NgForm; + @ViewChild("targetForm", {static: false}) currentForm: NgForm; targetEndpoint; testOngoing: boolean; onGoing: boolean; endpointId: number | string; - @ViewChild(InlineAlertComponent) inlineAlert: InlineAlertComponent; + @ViewChild(InlineAlertComponent, {static: false}) inlineAlert: InlineAlertComponent; @Output() reload = new EventEmitter(); diff --git a/src/portal/lib/src/create-edit-label/create-edit-label.component.html b/src/portal/lib/src/create-edit-label/create-edit-label.component.html index ab1f83b9d..92f040130 100644 --- a/src/portal/lib/src/create-edit-label/create-edit-label.component.html +++ b/src/portal/lib/src/create-edit-label/create-edit-label.component.html @@ -3,13 +3,13 @@
- +
diff --git a/src/portal/lib/src/project-policy-config/project-policy-config.component.scss b/src/portal/lib/src/project-policy-config/project-policy-config.component.scss index ddda99c37..53759f80c 100644 --- a/src/portal/lib/src/project-policy-config/project-policy-config.component.scss +++ b/src/portal/lib/src/project-policy-config/project-policy-config.component.scss @@ -5,6 +5,7 @@ .select { width: 120px; } + .margin-top-4 { margin-top: 4px; } @@ -17,6 +18,7 @@ width: 270px; color: #0079bb; overflow-y: auto; + li { height: 24px; line-height: 24px; @@ -43,16 +45,16 @@ .padding-top-8 { padding-top: 8px; } - -.padding-left-80 { - padding-left: 80px; +.position-relative { + position: relative; } - .add-modal { position: absolute; padding: 0 8px; background-color: rgb(238, 238, 238); - + .flex-direction-column { + flex-direction: column; + } input { width: 100%; border: 1px solid; @@ -63,8 +65,34 @@ } } -.hand{ +.hand { cursor: pointer; margin: 0; } +.config-subtext { + font-size: 0.55rem; + line-height: 1.2rem; + color: rgb(86, 86, 86); + font-weight: 300; +} + +.mt-05 { + margin-bottom: 0.5rem; +} + +.col-flex-grow-0 { + flex-grow: 0; +} + +.expire-data { + min-width: 12.5rem; + margin-top: -1rem; +} + +.bottom-line { + display: flex; + flex-direction: column-reverse; + font-size: 13px; + color: #000; +} diff --git a/src/portal/lib/src/project-policy-config/project-policy-config.component.ts b/src/portal/lib/src/project-policy-config/project-policy-config.component.ts index a6ab59495..1727ad04e 100644 --- a/src/portal/lib/src/project-policy-config/project-policy-config.component.ts +++ b/src/portal/lib/src/project-policy-config/project-policy-config.component.ts @@ -61,9 +61,9 @@ export class ProjectPolicyConfigComponent implements OnInit { @Input() hasSignedIn: boolean; @Input() hasProjectAdminRole: boolean; - @ViewChild('cfgConfirmationDialog') confirmationDlg: ConfirmationDialogComponent; - @ViewChild('dateInput') dateInput: ElementRef; - @ViewChild('dateSystemInput') dateSystemInput: ElementRef; + @ViewChild('cfgConfirmationDialog', {static: false}) confirmationDlg: ConfirmationDialogComponent; + @ViewChild('dateInput', {static: false}) dateInput: ElementRef; + @ViewChild('dateSystemInput', {static: false}) dateSystemInput: ElementRef; systemInfo: SystemInfo; orgProjectPolicy = new ProjectPolicy(); diff --git a/src/portal/lib/src/push-image/push-image.component.spec.ts b/src/portal/lib/src/push-image/push-image.component.spec.ts index a9178514b..4605fcb0d 100644 --- a/src/portal/lib/src/push-image/push-image.component.spec.ts +++ b/src/portal/lib/src/push-image/push-image.component.spec.ts @@ -39,7 +39,7 @@ describe('PushImageButtonComponent (inline template)', () => { expect(component).toBeTruthy(); }); - it('should open the drop-down panel', fakeAsync(() => { + it('should open the drop-down panel', () => { fixture.detectChanges(); fixture.whenStable().then(() => { fixture.detectChanges(); @@ -57,6 +57,6 @@ describe('PushImageButtonComponent (inline template)', () => { expect(copyInputs[1].value.trim()).toEqual(`docker push ${component.registryUrl}/${component.projectName}/IMAGE[:TAG]`); }); }); - })); + }); }); diff --git a/src/portal/lib/src/push-image/push-image.component.ts b/src/portal/lib/src/push-image/push-image.component.ts index 0fd21a60a..3c35ae2a8 100644 --- a/src/portal/lib/src/push-image/push-image.component.ts +++ b/src/portal/lib/src/push-image/push-image.component.ts @@ -13,9 +13,9 @@ export class PushImageButtonComponent { @Input() registryUrl: string = "unknown"; @Input() projectName: string = "unknown"; - @ViewChild("tagCopy") tagCopyInput: CopyInputComponent; - @ViewChild("pushCopy") pushCopyInput: CopyInputComponent; - @ViewChild("copyAlert") copyAlert: InlineAlertComponent; + @ViewChild("tagCopy", {static: false}) tagCopyInput: CopyInputComponent; + @ViewChild("pushCopy", {static: false}) pushCopyInput: CopyInputComponent; + @ViewChild("copyAlert", {static: false}) copyAlert: InlineAlertComponent; public get tagCommand(): string { return `docker tag SOURCE_IMAGE[:TAG] ${this.registryUrl}/${ diff --git a/src/portal/lib/src/push-image/push-image.scss b/src/portal/lib/src/push-image/push-image.scss index d5707a3d3..74835d8ae 100644 --- a/src/portal/lib/src/push-image/push-image.scss +++ b/src/portal/lib/src/push-image/push-image.scss @@ -32,6 +32,7 @@ .command-input { font-size: 14px; font-weight: 500; + border: 0; } :host>>>.dropdown-menu { diff --git a/src/portal/lib/src/replication/replication.component.ts b/src/portal/lib/src/replication/replication.component.ts index 1bdbfe200..8079ac3bb 100644 --- a/src/portal/lib/src/replication/replication.component.ts +++ b/src/portal/lib/src/replication/replication.component.ts @@ -120,16 +120,16 @@ export class ReplicationComponent implements OnInit, OnDestroy { jobs: ReplicationJobItem[]; - @ViewChild(ListReplicationRuleComponent) + @ViewChild(ListReplicationRuleComponent, {static: false}) listReplicationRule: ListReplicationRuleComponent; - @ViewChild(CreateEditRuleComponent) + @ViewChild(CreateEditRuleComponent, {static: false}) createEditPolicyComponent: CreateEditRuleComponent; - @ViewChild("replicationConfirmDialog") + @ViewChild("replicationConfirmDialog", {static: false}) replicationConfirmDialog: ConfirmationDialogComponent; - @ViewChild("StopConfirmDialog") + @ViewChild("StopConfirmDialog", {static: false}) StopConfirmDialog: ConfirmationDialogComponent; creationTimeComparator: Comparator = new CustomComparator< diff --git a/src/portal/lib/src/repository-gridview/repository-gridview.component.ts b/src/portal/lib/src/repository-gridview/repository-gridview.component.ts index fe533195b..62bd594ba 100644 --- a/src/portal/lib/src/repository-gridview/repository-gridview.component.ts +++ b/src/portal/lib/src/repository-gridview/repository-gridview.component.ts @@ -80,10 +80,10 @@ export class RepositoryGridviewComponent implements OnChanges, OnInit { totalCount = 0; currentState: State; - @ViewChild("confirmationDialog") + @ViewChild("confirmationDialog", {static: false}) confirmationDialog: ConfirmationDialogComponent; - @ViewChild("gridView") gridView: GridViewComponent; + @ViewChild("gridView", {static: false}) gridView: GridViewComponent; hasCreateRepositoryPermission: boolean; hasDeleteRepositoryPermission: boolean; constructor(@Inject(SERVICE_CONFIG) private configInfo: IServiceConfig, diff --git a/src/portal/lib/src/repository/repository.component.html b/src/portal/lib/src/repository/repository.component.html index a5216ed33..a8698657e 100644 --- a/src/portal/lib/src/repository/repository.component.html +++ b/src/portal/lib/src/repository/repository.component.html @@ -33,7 +33,7 @@ {{ 'REPOSITORY.MARKDOWN' | translate }} -
+

{{'REPOSITORY.NO_INFO' | translate }}

@@ -42,7 +42,8 @@
- +
diff --git a/src/portal/lib/src/repository/repository.component.ts b/src/portal/lib/src/repository/repository.component.ts index 74204ec1e..1ae176e48 100644 --- a/src/portal/lib/src/repository/repository.component.ts +++ b/src/portal/lib/src/repository/repository.component.ts @@ -56,7 +56,7 @@ export class RepositoryComponent implements OnInit { timerHandler: any; - @ViewChild('confirmationDialog') + @ViewChild('confirmationDialog', {static: false}) confirmationDlg: ConfirmationDialogComponent; constructor( diff --git a/src/portal/lib/src/tag/tag-detail.component.html b/src/portal/lib/src/tag/tag-detail.component.html index 83c053a2f..bee923073 100644 --- a/src/portal/lib/src/tag/tag-detail.component.html +++ b/src/portal/lib/src/tag/tag-detail.component.html @@ -89,8 +89,8 @@ - - + + {{ 'REPOSITORY.BUILD_HISTORY' | translate }} diff --git a/src/portal/lib/src/tag/tag.component.html b/src/portal/lib/src/tag/tag.component.html index 9df2ddad1..445d6d9ef 100644 --- a/src/portal/lib/src/tag/tag.component.html +++ b/src/portal/lib/src/tag/tag.component.html @@ -3,7 +3,7 @@
+
+
-
\ No newline at end of file +
From 4a43fd4a09133ae245be7d9a80dafad0db5d83c0 Mon Sep 17 00:00:00 2001 From: Stuart Clements Date: Thu, 12 Sep 2019 12:47:14 +0200 Subject: [PATCH 025/122] Comments from Alex --- docs/migration_guide.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/migration_guide.md b/docs/migration_guide.md index d64076ced..a703378ad 100644 --- a/docs/migration_guide.md +++ b/docs/migration_guide.md @@ -1,6 +1,6 @@ # Harbor Upgrade and Migration Guide -This guide covers upgrade and migration to versions >= v1.9.0. This guide only covers migration from v1.7.x and later to the current version. If you are upgrading from an earlier version, refer to the migration guide in the `release-1.7.0` branch to upgrade to v1.7.x first, then follow this guide to perform the migration to this version. +This guide covers upgrade and migration to version 1.9.0. This guide only covers migration from v1.7.x and later to the current version. If you are upgrading from an earlier version, refer to the migration guide in the `release-1.7.0` branch to upgrade to v1.7.x first, then follow this guide to perform the migration to this version. When upgrading an existing Harbor 1.7.x instance to a newer version, you might need to migrate the data in your database and the settings in `harbor.cfg`. Since the migration might alter the database schema and the settings of `harbor.cfg`, you should **always** back up your data before any migration. @@ -10,7 +10,7 @@ Since the migration might alter the database schema and the settings of `harbor. - Again, you must back up your data before any data migration. - Since v1.8.0, the configuration of Harbor has changed to a `.yml` file. If you are upgrading from 1.7.x, the migrator will transform the configuration file from `harbor.cfg` to `harbor.yml`. The command will be a little different to perform this migration, so make sure you follow the steps below. - In version 1.9.0, some containers are started by `non-root`. This does not pose problems if you are upgrading an officially released version of Harbor, but if you have deployed a customized instance of Harbor, you might encounter permission issues. -- In previous releases, user roles took precedence over group roles in a project. In this version, if a user roles and group roles are combined so that the user has both the user and group role. This might cause the roles of certain users to change during upgrade. +- In previous releases, user roles took precedence over group roles in a project. In this version, user roles and group roles are combined so that the user has whichever set of permissions is highest. This might cause the roles of certain users to change during upgrade. - With the introduction of storage and artifact quotas in version 1.9.0, migration from 1.7.x and 1.8.x might take a few minutes. This is because the `core` walks through all blobs in the registry and populates the database with information about the layers and artifacts in projects. - With the introduction of storage and artifact quotas in version 1.9.0, replication between version 1.9.0 and a previous version of Harbor does not work. You must upgrade all Harbor nodes to 1.9.0 if you have configured replication between them. @@ -34,7 +34,7 @@ Since the migration might alter the database schema and the settings of `harbor. 3. Get the latest Harbor release package from Github: https://github.com/goharbor/harbor/releases -4. Before upgrading Harbor, perform migration first. The migration tool is delivered as a docker image, so you should pull the image from docker hub. Replace [tag] with the release version of Harbor (for example, v1.9.0) in the command below: +4. Before upgrading Harbor, perform a migration first. The migration tool is delivered as a docker image, so you should pull the image from docker hub. Replace [tag] with the release version of Harbor (for example, v1.9.0) in the command below: ``` docker pull goharbor/harbor-migrator:[tag] ``` @@ -52,7 +52,7 @@ Since the migration might alter the database schema and the settings of `harbor. ## Roll Back from an Upgrade -If, for any reason, you want to roll back to the previous version of Harbor, follow the below steps: +If, for any reason, you want to roll back to the previous version of Harbor, perform the following steps: 1. Stop and remove the current Harbor service if it is still running. ``` @@ -78,3 +78,4 @@ If, for any reason, you want to roll back to the previous version of Harbor, fol cd harbor ./install.sh ``` +**NOTE**: While you can roll back an upgrade to the state before you started the upgrade, Harbor does not support downgrades. \ No newline at end of file From 5490bf395bab69f45efbef1b9b37095b77c9eaf6 Mon Sep 17 00:00:00 2001 From: Stuart Clements Date: Thu, 12 Sep 2019 13:45:38 +0200 Subject: [PATCH 026/122] Comment from Daniel --- docs/user_guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user_guide.md b/docs/user_guide.md index 3175a565d..629767e01 100644 --- a/docs/user_guide.md +++ b/docs/user_guide.md @@ -688,7 +688,7 @@ new ID token and the CLI secret will work again. Robot Accounts are accounts created by project admins that are intended for automated operations. They have the following limitations: 1, Robot Accounts cannot login Harbor portal -2, Robot Accounts can only perform `docker push` / `docker pull` operations with a token. +2, Robot Accounts can only perform operations by using the Docker and Helm CLIs. ### Add a Robot Account If you are a project admin, you can create a Robot Account by clicking "New Robot Account" in the `Robot Accounts` tab of a project, and enter a name, a description, and grant permission to the account to push and pull images and Helm charts. From f14411dcab54176dfe3c3d052b07cd68887517e7 Mon Sep 17 00:00:00 2001 From: Stuart Clements Date: Thu, 12 Sep 2019 17:06:37 +0200 Subject: [PATCH 027/122] Comments from Alex --- docs/user_guide.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/user_guide.md b/docs/user_guide.md index 078f7390c..fd8f23419 100644 --- a/docs/user_guide.md +++ b/docs/user_guide.md @@ -153,9 +153,9 @@ Replication allows users to replicate resources (images/charts) between Harbor a Once the system administrator has set a rule, all resources that match the defined [filter](#resource-filter) patterns will be replicated to the destination registry when the [triggering condition](#trigger-mode) is matched. Each resource will start a task to run. If the namespace does not exist on the destination registry, a new namespace will be created automatically. If it already exists and the user configured in the policy has no write privilege to it, the process will fail. The member information will not be replicated. -There may be a bit of delay during replication based on the situation of the network. If a replication task fails, it will be re-scheduled a few minutes later and try 3 times. +There may be a bit of delay during replication based on the situation of the network. If a replication task fails, it will be re-scheduled a few minutes later and retried times. -**Note:** Due to API changes, replication between different versions of Harbor might not work. +**Note:** Due to API changes, replication between different versions of Harbor is not supported. ### Creating replication endpoints @@ -168,28 +168,28 @@ To replicate image repositories from one instance of Harbor to another Harbor or The endpoint can be another Harbor instance, or a non-Harbor registry. Currently, the following non-Harbor registries are supported: - - Ali Cloud Container Registry - - Helm Hub - - Docker registry - - Huawei SWR - - Azure Container Registry - - AWS Elastic Container Registry - Docker Hub - - Google Container Registry + - Docker registry + - AWS Elastic Container Registry + - Azure Container Registry + - Ali Cloud Container Registry + - Google Container Registry + - Huawei SWR + - Helm Hub ![Replication providers](img/replication-endpoint2.png) 1. Enter a suitable name and description for the new replication endpoint. 1. Enter the full URL of the registry to set up as a replication endpoint. - For example, to replicate to another Harbor instance, enter https://harbor_instance_address:443. The registry must exist before you create the endpoint. + For example, to replicate to another Harbor instance, enter https://harbor_instance_address:443. The registry must exist and be running before you create the endpoint. 1. Enter the Access ID and Access Secret for the endpoint registry instance. Use an account that has the appropriate privileges on that registry, or an account that has write permission on the corresponding project in a Harbor registry. **NOTES**: - AWS ECR adapters should use access keys, not a username and password. The access key should have sufficient permissions, such as storage permission. - - Google GCR adapters should use the entire JASON key generated in the service account. The namespace should start with the project ID. + - Google GCR adapters should use the entire JSON key generated in the service account. The namespace should start with the project ID. 1. Optionally, select the **Verify Remote Cert** check box. Deselect the check box if the remote registry uses a self-signed or untrusted certificate. From 6b5fd36bb35e3cc1c6ae7ffe817a1199662ad62f Mon Sep 17 00:00:00 2001 From: Wang Yan Date: Wed, 11 Sep 2019 13:34:23 +0800 Subject: [PATCH 028/122] add e2e test case for project quota 1. Create a new user(UA); 2. Create a new private project(PA) by user(UA); 3. Add user(UA) as a member of project(PA) with project-admin role; 4. Push an image to project(PA) by user(UA), then check the project quota usage; 5. Check quota change 6. Delete image, the quota should be changed to 0. Signed-off-by: wang yan --- docs/swagger.yaml | 1 - tests/apitests/python/library/docker_api.py | 2 +- tests/apitests/python/library/system.py | 10 +++ tests/apitests/python/test_project_quota.py | 88 +++++++++++++++++++++ tests/robot-cases/Group0-BAT/API_DB.robot | 2 + 5 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 tests/apitests/python/test_project_quota.py diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 687f92d15..83cb717eb 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -3600,7 +3600,6 @@ paths: description: List quotas tags: - Products - - Quota parameters: - name: reference in: query diff --git a/tests/apitests/python/library/docker_api.py b/tests/apitests/python/library/docker_api.py index aa5a0e0db..715799a4c 100644 --- a/tests/apitests/python/library/docker_api.py +++ b/tests/apitests/python/library/docker_api.py @@ -25,7 +25,7 @@ class DockerAPI(object): if str(err).lower().find(expected_error_message.lower()) < 0: raise Exception(r"Docker login: Return message {} is not as expected {}".format(str(err), expected_error_message)) else: - raise Exception(r" Docker login {} failed, error is [{}]".format (image, err.message)) + raise Exception(r" Docker login failed, error is [{}]".format (err.message)) def docker_image_pull(self, image, tag = None, expected_error_message = None): if tag is not None: diff --git a/tests/apitests/python/library/system.py b/tests/apitests/python/library/system.py index 570d277e3..c67ad5434 100644 --- a/tests/apitests/python/library/system.py +++ b/tests/apitests/python/library/system.py @@ -182,3 +182,13 @@ class System(base.Base): def get_cve_whitelist(self, **kwargs): client = self._get_client(**kwargs) return client.system_cve_whitelist_get() + + def get_project_quota(self, reference, reference_id, **kwargs): + params={} + params['reference'] = reference + params['reference_id'] = reference_id + + client = self._get_client(**kwargs) + data, status_code, _ = client.quotas_get_with_http_info(**params) + base._assert_status_code(200, status_code) + return data \ No newline at end of file diff --git a/tests/apitests/python/test_project_quota.py b/tests/apitests/python/test_project_quota.py new file mode 100644 index 000000000..8ab8c842b --- /dev/null +++ b/tests/apitests/python/test_project_quota.py @@ -0,0 +1,88 @@ +from __future__ import absolute_import +import unittest + +from testutils import harbor_server +from testutils import TEARDOWN +from testutils import ADMIN_CLIENT +from library.project import Project +from library.user import User +from library.repository import Repository +from library.repository import push_image_to_project +from library.system import System + +class TestProjects(unittest.TestCase): + @classmethod + def setUp(self): + project = Project() + self.project= project + + user = User() + self.user= user + + repo = Repository() + self.repo= repo + + self.system = System() + + @classmethod + def tearDown(self): + print "Case completed" + + @unittest.skipIf(TEARDOWN == False, "Test data won't be erased.") + def test_ClearData(self): + #1. Delete project(PA); + self.project.delete_project(TestProjects.project_test_quota_id, **ADMIN_CLIENT) + + #2. Delete user(UA); + self.user.delete_user(TestProjects.user_test_quota_id, **ADMIN_CLIENT) + + def testProjectQuota(self): + """ + Test case: + Project Quota + Test step and expected result: + 1. Create a new user(UA); + 2. Create a new private project(PA) by user(UA); + 3. Add user(UA) as a member of project(PA) with project-admin role; + 4. Push an image to project(PA) by user(UA), then check the project quota usage; + 5. Check quota change + 6. Delete image, the quota should be changed to 0. + Tear down: + 1. Delete repository(RA) by user(UA); + 2. Delete project(PA); + 3. Delete user(UA); + """ + url = ADMIN_CLIENT["endpoint"] + user_001_password = "Aa123456" + + #1. Create user-001 + TestProjects.user_test_quota_id, user_test_quota_name = self.user.create_user(user_password = user_001_password, **ADMIN_CLIENT) + TestProjects.USER_TEST_QUOTA_CLIENT=dict(endpoint = url, username = user_test_quota_name, password = user_001_password) + + #2. Create a new private project(PA) by user(UA); + TestProjects.project_test_quota_id, project_test_quota_name = self.project.create_project(metadata = {"public": "false"}, **ADMIN_CLIENT) + + #3. Add user(UA) as a member of project(PA) with project-admin role; + self.project.add_project_members(TestProjects.project_test_quota_id, TestProjects.user_test_quota_id, **ADMIN_CLIENT) + + #4.Push an image to project(PA) by user(UA), then check the project quota usage; -- {"count": 1, "storage": 2791709} + image = "alpine" + src_tag = "3.10" + TestProjects.repo_name, _ = push_image_to_project(project_test_quota_name, harbor_server, user_test_quota_name, user_001_password, image, src_tag) + + #5. Get project quota + quota = self.system.get_project_quota("project", TestProjects.project_test_quota_id, **ADMIN_CLIENT) + self.assertEqual(quota[0].used["count"], 1) + self.assertEqual(quota[0].used["storage"], 2791709) + + #6. Delete repository(RA) by user(UA); + self.repo.delete_repoitory(TestProjects.repo_name, **ADMIN_CLIENT) + + #6. Quota should be 0 + quota = self.system.get_project_quota("project", TestProjects.project_test_quota_id, **ADMIN_CLIENT) + self.assertEqual(quota[0].used["count"], 0) + self.assertEqual(quota[0].used["storage"], 0) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/robot-cases/Group0-BAT/API_DB.robot b/tests/robot-cases/Group0-BAT/API_DB.robot index 0324e476c..c2ee1d071 100644 --- a/tests/robot-cases/Group0-BAT/API_DB.robot +++ b/tests/robot-cases/Group0-BAT/API_DB.robot @@ -49,6 +49,8 @@ Test Case - Robot Account Harbor API Test ./tests/apitests/python/test_robot_account.py Test Case - Sign A Image Harbor API Test ./tests/apitests/python/test_sign_image.py +Test Case - Project Quota + Harbor API Test ./tests/apitests/python/test_project_quota.py Test Case - System Level CVE Whitelist Harbor API Test ./tests/apitests/python/test_sys_cve_whitelists.py Test Case - Project Level CVE Whitelist From f36efa4dcd6dca2fbede257390f4fcc33a96a279 Mon Sep 17 00:00:00 2001 From: Daniel Jiang Date: Mon, 16 Sep 2019 14:32:34 +0800 Subject: [PATCH 029/122] Add groups claim to OIDC configuration This commit add the new setting "oidc_groups_claim" to Harbor's configurations. And add "group_claim" to OIDCSetting struct. Signed-off-by: Daniel Jiang --- src/common/config/metadata/metadatalist.go | 1 + src/common/const.go | 1 + src/common/models/config.go | 1 + src/core/config/config.go | 1 + src/core/config/config_test.go | 2 ++ src/core/filter/security_test.go | 1 + 6 files changed, 7 insertions(+) diff --git a/src/common/config/metadata/metadatalist.go b/src/common/config/metadata/metadatalist.go index 7106a38c6..bf0b70872 100644 --- a/src/common/config/metadata/metadatalist.go +++ b/src/common/config/metadata/metadatalist.go @@ -143,6 +143,7 @@ var ( {Name: common.OIDCEndpoint, Scope: UserScope, Group: OIDCGroup, ItemType: &StringType{}}, {Name: common.OIDCCLientID, Scope: UserScope, Group: OIDCGroup, ItemType: &StringType{}}, {Name: common.OIDCClientSecret, Scope: UserScope, Group: OIDCGroup, ItemType: &PasswordType{}}, + {Name: common.OIDCGroupsClaim, Scope: UserScope, Group: OIDCGroup, ItemType: &StringType{}}, {Name: common.OIDCScope, Scope: UserScope, Group: OIDCGroup, ItemType: &StringType{}}, {Name: common.OIDCVerifyCert, Scope: UserScope, Group: OIDCGroup, DefaultValue: "true", ItemType: &BoolType{}}, diff --git a/src/common/const.go b/src/common/const.go index 9da5d96e3..bec1d261c 100755 --- a/src/common/const.go +++ b/src/common/const.go @@ -109,6 +109,7 @@ const ( OIDCCLientID = "oidc_client_id" OIDCClientSecret = "oidc_client_secret" OIDCVerifyCert = "oidc_verify_cert" + OIDCGroupsClaim = "oidc_groups_claim" OIDCScope = "oidc_scope" DefaultClairEndpoint = "http://clair:6060" diff --git a/src/common/models/config.go b/src/common/models/config.go index dfd13d4bb..3f22e1b94 100644 --- a/src/common/models/config.go +++ b/src/common/models/config.go @@ -82,6 +82,7 @@ type OIDCSetting struct { VerifyCert bool `json:"verify_cert"` ClientID string `json:"client_id"` ClientSecret string `json:"client_secret"` + GroupsClaim string `json:"groups_claim"` RedirectURL string `json:"redirect_url"` Scope []string `json:"scope"` } diff --git a/src/core/config/config.go b/src/core/config/config.go index b3808745d..f7dea7f8c 100755 --- a/src/core/config/config.go +++ b/src/core/config/config.go @@ -512,6 +512,7 @@ func OIDCSetting() (*models.OIDCSetting, error) { VerifyCert: cfgMgr.Get(common.OIDCVerifyCert).GetBool(), ClientID: cfgMgr.Get(common.OIDCCLientID).GetString(), ClientSecret: cfgMgr.Get(common.OIDCClientSecret).GetString(), + GroupsClaim: cfgMgr.Get(common.OIDCGroupsClaim).GetString(), RedirectURL: extEndpoint + common.OIDCCallbackPath, Scope: scope, }, nil diff --git a/src/core/config/config_test.go b/src/core/config/config_test.go index ae31c04bc..d10db7aa7 100644 --- a/src/core/config/config_test.go +++ b/src/core/config/config_test.go @@ -253,6 +253,7 @@ func TestOIDCSetting(t *testing.T) { common.OIDCEndpoint: "https://oidc.test", common.OIDCVerifyCert: "true", common.OIDCScope: "openid, profile", + common.OIDCGroupsClaim: "my_group", common.OIDCCLientID: "client", common.OIDCClientSecret: "secret", common.ExtEndpoint: "https://harbor.test", @@ -263,6 +264,7 @@ func TestOIDCSetting(t *testing.T) { assert.Equal(t, "test", v.Name) assert.Equal(t, "https://oidc.test", v.Endpoint) assert.True(t, v.VerifyCert) + assert.Equal(t, "my_group", v.GroupsClaim) assert.Equal(t, "client", v.ClientID) assert.Equal(t, "secret", v.ClientSecret) assert.Equal(t, "https://harbor.test/c/oidc/callback", v.RedirectURL) diff --git a/src/core/filter/security_test.go b/src/core/filter/security_test.go index a74d2fa12..5c23dd7ec 100644 --- a/src/core/filter/security_test.go +++ b/src/core/filter/security_test.go @@ -112,6 +112,7 @@ func TestConfigCtxModifier(t *testing.T) { common.OIDCEndpoint: "https://accounts.google.com", common.OIDCVerifyCert: "true", common.OIDCScope: "openid, profile, offline_access", + common.OIDCGroupsClaim: "groups", common.OIDCCLientID: "client", common.OIDCClientSecret: "secret", common.ExtEndpoint: "https://harbor.test", From 0f4cf892536af2ec473fd62643800f654dc02c66 Mon Sep 17 00:00:00 2001 From: Stuart Clements Date: Mon, 16 Sep 2019 11:53:16 +0200 Subject: [PATCH 030/122] Documented how to configure Syslog and DB connection pool in harbor.yml (#9005) * Documented how to configure Syslog connection in harbor.yml * Documenting DB connection pool * Removed extraneous character * Comments from Qian. * Comment from Weiwei * Another comment from Weiwei * Added max_open_conns and max_idle_conns to the external DB * Corrected defaults for max_open_conns and max_idle_conns --- docs/installation_guide.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/docs/installation_guide.md b/docs/installation_guide.md index 6bc190a71..d424464b5 100644 --- a/docs/installation_guide.md +++ b/docs/installation_guide.md @@ -100,19 +100,24 @@ The parameters are described below - note that at the very least, you will need - **harbor_admin_password**: The administrator's initial password. This password only takes effect for the first time Harbor launches. After that, this setting is ignored and the administrator's password should be set in the Portal. _Note that the default username/password are **admin/Harbor12345** ._ - - - **database**: the configs related to local database - - **password**: The root password for the PostgreSQL database used for **db_auth**. _Change this password for any production use!_ + - **password**: The root password for the PostgreSQL database. Change this password for any production use. + - **max_idle_conns**: The maximum number of connections in the idle connection pool. If <=0 no idle connections are retained. The default value is 50 and if it is not configured the value is 2. + - **max_open_conns**: The maximum number of open connections to the database. If <= 0 there is no limit on the number of open connections. The default value is 100 for the max connections to the Harbor database. If it is not configured the value is 0. - **jobservice**: jobservice related service - **max_job_workers**: The maximum number of replication workers in job service. For each image replication job, a worker synchronizes all tags of a repository to the remote destination. Increasing this number allows more concurrent replication jobs in the system. However, since each worker consumes a certain amount of network/CPU/IO resources, please carefully pick the value of this attribute based on the hardware resource of the host. - **log**: log related url - **level**: log level, options are debug, info, warning, error, fatal - - **rotate_count**: Log files are rotated **rotate_count** times before being removed. If count is 0, old versions are removed rather than rotated. - - **rotate_size**: Log files are rotated only if they grow bigger than **rotate_size** bytes. If size is followed by k, the size is assumed to be in kilobytes. If the M is used, the size is in megabytes, and if G is used, the size is in gigabytes. So size 100, size 100k, size 100M and size 100G are all valid. - - **location**: the directory to store log - + - **local**: The default is to retain logs locally. + - **rotate_count**: Log files are rotated **rotate_count** times before being removed. If count is 0, old versions are removed rather than rotated. + - **rotate_size**: Log files are rotated only if they grow bigger than **rotate_size** bytes. If size is followed by k, the size is assumed to be in kilobytes. If the M is used, the size is in megabytes, and if G is used, the size is in gigabytes. So size 100, size 100k, size 100M and size 100G are all valid. + - **location**: the directory to store logs + - **external_endpoint**: Enable this option to forward logs to a syslog server. + - **protocol**: Transport protocol for the syslog server. Default is TCP. + - **host**: The URL of the syslog server. + - **port**: The port on which the syslog server listens. + ##### optional parameters - **http**: @@ -143,6 +148,8 @@ refer to **[Configuring Harbor with HTTPS Access](configure_https.md)**. - **username**: username to connect harbor core database - **password**: password to harbor core database - **ssl_mode**: is enable ssl mode + - **max_idle_conns**: The maximum number of connections in the idle connection pool. If <=0 no idle connections are retained. The default value is 2. + - **max_open_conns**: The maximum number of open connections to the database. If <= 0 there is no limit on the number of open connections. The default value is 0. - **clair**: clair's database configs - **host**: hostname for clair database - **port**: port of clair database From 0470b334c6a7ded3c9919634a564604aadf7fa16 Mon Sep 17 00:00:00 2001 From: Stuart Clements Date: Mon, 16 Sep 2019 14:54:40 +0200 Subject: [PATCH 031/122] Adding docs about webhooks, tag retention, CVE whitelists and project quotas (#8869) * Adding docs about webhooks * Fixed title Signed-off-by: Stuart Clements * Comments from Alex Signed-off-by: Stuart Clements * Adding placeholder for tag retentionl correct # of endpoints Signed-off-by: Stuart Clements * Added doc for tag retention Signed-off-by: Stuart Clements * Added JSON example for webhooks Signed-off-by: Stuart Clements * Added global webhook setting and error handling Signed-off-by: Stuart Clements * Comments from mmpei Signed-off-by: Stuart Clements * Comment from Alex Signed-off-by: Stuart Clements * Comment about concurrency from Alex Signed-off-by: Stuart Clements * Comment from steven about ** wildcard Signed-off-by: Stuart Clements * Comments from Steven on examples Signed-off-by: Stuart Clements * Added screen cap to edit retention rule Signed-off-by: Stuart Clements * Fixing indentation Signed-off-by: Stuart Clements * Clarified quotas Signed-off-by: Stuart Clements * Added doc for quotas Signed-off-by: Stuart Clements * Removing fullstops Signed-off-by: Stuart Clements * Fixed image links Signed-off-by: Stuart Clements * Documenting CVE whitelists Signed-off-by: Stuart Clements * Fix cut n paste error Signed-off-by: Stuart Clements * Adding images ` Signed-off-by: Stuart Clements * Another cut n paste error Signed-off-by: Stuart Clements * Typos Signed-off-by: Stuart Clements * Tidied the language somewhat Signed-off-by: Stuart Clements * Comments from Wang Yan Signed-off-by: Stuart Clements * Completed unfinished sentence. Signed-off-by: Stuart Clements * Comments from Alex Signed-off-by: Stuart Clements * Comment from Alex on artifact counts * Replaced "artifact" with "tag" as appropriate * Updated CVE whitelist button label * Comments from He Weiwei * Review comments --- docs/img/cve-whitelist1.png | Bin 0 -> 55915 bytes docs/img/cve-whitelist2.png | Bin 0 -> 24482 bytes docs/img/cve-whitelist3.png | Bin 0 -> 10453 bytes docs/img/cve-whitelist4.png | Bin 0 -> 4952 bytes docs/img/cve-whitelist5.png | Bin 0 -> 84377 bytes docs/img/cve-whitelist6.png | Bin 0 -> 14643 bytes docs/img/project-quota1.png | Bin 0 -> 85744 bytes docs/img/project-quota2.png | Bin 0 -> 15410 bytes docs/img/project-quota3.png | Bin 0 -> 17032 bytes docs/img/project-quota4.png | Bin 0 -> 8936 bytes docs/img/project-quota5.png | Bin 0 -> 10174 bytes docs/img/tag-retention1.png | Bin 0 -> 12995 bytes docs/img/tag-retention2.png | Bin 0 -> 39085 bytes docs/img/tag-retention3.png | Bin 0 -> 44733 bytes docs/img/tag-retention4.png | Bin 0 -> 5846 bytes docs/img/tag-retention5.png | Bin 0 -> 15077 bytes docs/img/webhooks1.png | Bin 0 -> 13556 bytes docs/img/webhooks2.png | Bin 0 -> 23850 bytes docs/img/webhooks3.png | Bin 0 -> 57363 bytes docs/img/webhooks4.png | Bin 0 -> 3010 bytes docs/user_guide.md | 1875 ++++++++++++++++++++--------------- 21 files changed, 1100 insertions(+), 775 deletions(-) create mode 100644 docs/img/cve-whitelist1.png create mode 100644 docs/img/cve-whitelist2.png create mode 100644 docs/img/cve-whitelist3.png create mode 100644 docs/img/cve-whitelist4.png create mode 100644 docs/img/cve-whitelist5.png create mode 100644 docs/img/cve-whitelist6.png create mode 100644 docs/img/project-quota1.png create mode 100644 docs/img/project-quota2.png create mode 100644 docs/img/project-quota3.png create mode 100644 docs/img/project-quota4.png create mode 100644 docs/img/project-quota5.png create mode 100644 docs/img/tag-retention1.png create mode 100644 docs/img/tag-retention2.png create mode 100644 docs/img/tag-retention3.png create mode 100644 docs/img/tag-retention4.png create mode 100644 docs/img/tag-retention5.png create mode 100644 docs/img/webhooks1.png create mode 100644 docs/img/webhooks2.png create mode 100644 docs/img/webhooks3.png create mode 100644 docs/img/webhooks4.png diff --git a/docs/img/cve-whitelist1.png b/docs/img/cve-whitelist1.png new file mode 100644 index 0000000000000000000000000000000000000000..f345c4e88c9f08b3f77d612407b1eedf77dc3568 GIT binary patch literal 55915 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
  • vLTtVBcUd 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 literal 0 HcmV?d00001 diff --git a/docs/img/cve-whitelist2.png b/docs/img/cve-whitelist2.png new file mode 100644 index 0000000000000000000000000000000000000000..905768294d3da9e01040d4e260a1d7298c21de52 GIT binary patch literal 24482 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 SDd2WNAWdL7Uhy5Pm;VBYu^u1* literal 0 HcmV?d00001 diff --git a/docs/img/cve-whitelist3.png b/docs/img/cve-whitelist3.png new file mode 100644 index 0000000000000000000000000000000000000000..524db93874874e5cd2cbe2dbb71f5b4fa27ebd07 GIT binary patch literal 10453 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 literal 0 HcmV?d00001 diff --git a/docs/img/cve-whitelist4.png b/docs/img/cve-whitelist4.png new file mode 100644 index 0000000000000000000000000000000000000000..972e84c987b6320818b552234c2d29d216554f6c GIT binary patch literal 4952 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 H{oX$SG}~!D literal 0 HcmV?d00001 diff --git a/docs/img/cve-whitelist5.png b/docs/img/cve-whitelist5.png new file mode 100644 index 0000000000000000000000000000000000000000..d9bc6c929a8803aac07ffe7494df37e79782c43d GIT binary patch literal 84377 zcmZU)by$?o_xO$a22?`nuBD_wIs}!aySux)OF>}i25ISDq+#jqZkFywy5YCzhwt;p zb6*QwoO|w>+1JdRIdjgrgJh*eP~PIdg@c1b5fcTP`1qb&s^z}=az z*e~C`f!%rYbVtF)*wIDL-Uv?1_VKAW(%;I>91JY=U`6fWYFa8IVB*(LVii4mYcp#T zxE6xVK$r~i-}6rP21an_kA8d4#RP4vtcY1lowu84={} zydU&Gnhd2NvznYFJK*{4?wY@J9Y{=0j&MYS^$QM8*H&F!J?U^kfi{l)t$$&G*;KKb zI{H-XoqcM`JRt)@604vL<$r&R!r`J~hgZxaRJ~a13L|J&#Qql8H96^&9rEvP#M`cH zu^3?p^1pxK=3>*O`R#=E<_aEGP7feHKfwL}?)>>s#Ds%`d3IdZWU({#%;GE9k_zzd zKgj>es3zjy?OZG$l1$>{-ZMPBAMY~II^+3Lit>K@X$HZ;wX9|39A zpy=>s@kf)6!2iAbt-B+2yk6hMcv|(QDeAX3v5E%m|J9BAVfgwgYj~K3-jkC8oNkjv zNBL6g?_+STl~u7OJ{O~DtZ(c6k1Vy;j7L>mHo*VaXjU61N zgZArx&l0mrb*$UF0Ts1L8IP)_EWJx3kPC~7NWRv=1;o|WU5nzp_*)PmFDEBwXYo^x zyjqrQeo~V0U{X$LiXP;g_n8ICdECFzfosWv`_A~U`cPVA35otF##b$V=GNB4JAl99 z7Urn^H;dxQ<5PpAnMu()eUe)6njC0oT5}k8FRa8gsJEM5s5|~^c-c-ao+w@U*FH7c z^Y_J7`r}Ua?R#`;pN=iq>7yS=y_6G|G5rX${#!TkNbaP_g?3I$UV&*1ap+DV;(Noa>3sR` zyugguzx^FSgbl+&6$fT&Q-j$2P1~v&+0ME@Czcmtc z3+%j{ZmxFWshWv57spVrp_q<>_ah?S#^;}m&8Ip~PcVx!0kO+zsmb@9XY&Bq$@OzI zIutAcfH?Yd+2g>R5^UtI6Mt}&FC<&WnqpdRh}x|mdpN|kuxeeiH8~F-)7;)O__Bs_ zD7-k(iS2JMiBZn`Zrmx+CMOgW8q1rs$E)PkWDKWxSzc;=Lp7hxY5Qpz7s4d4h7$6^ zs`aBG23kQ(1s3${me5ZEc?Grkw3A*YckNY{eChbgX42US*7>GSUPXLvM^YEjvk8PV z*@dEa4YFr>YW&4XQnKT7-Le1=Gv%(EI;GJ!Vrb>!yucykyNZMl1GYk5( z49KQ>ℜ^Q-aS;+Nb)^vHR;8q;iP;p%H_81m4tTLnVSxcq%>J8Bdg=0NgtOPWuy> zhz$gmEIMfUZw3Gr$r*>yxP(q|fxyj%*UeC*p;-S?!trXQ-V$=un2&@rK%gZQbiI+> z;lw}1$6TciH6}Zv zZNIEc<~c=|z^`GA_z{z}HK%^&WYM-u=75lYRjEZ)g1u)lItiz$IpF()W-xXJ8% z+=zt_p)O63)A*%9u3!{gTHc|;JH>RWTvV7$cu?XfW!{-YSRWqU)TqnkGyKegi#-m3 z^%eHhaJ77BUH{2~7(@J>@iU?zQnwj&QMR8EtLb!hzc*(uZj4QL%XM#LhqU6o&LC4A6L)w{hONx^r@?Au7g~Y}Ax0T7^6yf$ zWJlGrIFNttVU}FmhQ;j4wuWX|RWKsHM>~E=I8=J=kv2?X()resa99+_kR8pB@NxN! ziEZm&_c|91&|HSg4wA=QlImRj0}yU`E?HfQTkmf#&ue{FF46^d&}W;RibWgrz{IE1 z8SBe8QcLQ^x3?TVl2fPaW`DKVwsI;&u+MwcVYW7k@vkOrAu>HJDgOA>KCIsHr3@Q@Xe%L*z#K@y4N`;SR@~ttxZa$Ua>@|VPZ~=1~=t+%wgVu*p z*W)-@2Xh%;dtFoNh_Gf7my}!RA-FuVU^tIHsy^b@lm+W2)m_=R8dN1K-G(1x5{k~b zW&X}hwA!lnTnN~LpT0z}83X|4PTl_yZ#hAiF1Mx%zvB)T&bn!Wt4q&W6}|Vf zB798$5%!3wthoL40ZNbU4!m z&rbY^|JQX_Qg+I`3i)?LWyx7rF01e_x`-@NRFLYE}b>8Ny_tye5hz0m>6VAo4t{EKVtJKyUf2S?&zEVM*phtj7HHC-YK=w0(N4+{FwtauRVH1v z)<~ol&hLLFjj(S{Hvv?6z^-y+@dwn8_~n8T4SW@?Q+FnOvK`liRQHzG9uHoeva_$6 zv01k?$ncb1D`AgYm%8DZMW;waU(cc1clfA=Pf>|6E#Ys?xvX1Ptc`&a@;c+X#;s(T z_|tff>J&UUfDyLcDZ0H|>j|Z)2?xS0CMdJdEM%Od6#B5nZC3kvMC9r80K0IloqgT> zpr7A;x0cG{*_xas3L&asw79+dB8d`wB2aPO0wth8ny;lbbJl({TkL8TrBwrTe%QnI zt~tMrSSmQSUyHg+nDeOJdhkCu%zE1JODIRuS)W8Kl+F2@8Ji0$ z+5+5Ufl=J&m1Q+v_4$0KZ(G9=8{j^q~7H}P1VIh;y*!X?ZQ~oLk(a()2oyg6p zwQ#&mO9VCG)G3c{aG~m%#Xmd$-a>gQra+Cv&t4;GkDw=Xyy6vjrJW{z@#mWq$c9heQj_54|5Km(g4Q073oN6K5v49zc^kDN@-pqi|_9gA}m1x;bos5XV|nwKgMy z&}v?}`%rCR&ARr}hi4XoXg;KOOpd^ChTp`Xk{f(aDLc+;2&z+CFhUvb z`oS1JcssBYG3;t-*(Mvg2THIeR1cq*Ht}6{@1v9RE^#WqM&Lui`C9}oR6GKTyTE^Z zSCf;Sb0DF5#PSV?_62eh{W&~#NEL0Brb=eg>OeM15w@g3nJRsJJMyCnC*@X;;+(yt zMyGz6a!xN#wN$wF(a~m$JDJiHc>yGM`*!^&O3~c{p(;IgNN3V+)$U+K1m+|%jY-^x zuJ4`t3{rhcsY1^z7!N&8rExGmsnSmsiB#_YUE#~4IW;gFh_BTgSk`JG@V*yBn0|4b zC|N@R7;S=mI&hD+y>vQnRQG18DNcQ+N*@&|$N_oW{1*oG#&i#7VeBM%*k-=UFo{o! z@UBLJLpVk1r|7c+nX|OY8G&8b+HsX3%k&MKw`-ZKG2y}OOPJL4 zW8FzTXX#$OOPDsy_QYo{7`BoK|52)bPU)eh*|juvQ>$80Ut0D1cfQgaa(*vvzGbzH zEVm1PqQhqvx81u*nFc{N)}Rn1&90RiDq#qFCOOow zBLwwWBn9cIrxE}4wnp%ns60%I%%)nv&Xe03z2O2S5WTtsPxbWy>lbT zavnw1A63#Fdi&j*Eo(0NYdJd>>%H$)xSEG`;|QmXHPxVd3IYE8V>8GW>dP277`Nw0 zO98y7v?h5QD;CoxhZ1}#7-VOM9?k3mL}CE+rn>pOqw}Xuz`ctBbDp1>DTa>1<8rT7 zm~3`<&5`$6ZQ;JZRNEh?xIGEWPT>#O3vOa^)r*+=pu&04@CW1%T*?c+!M7@6H3{)& zn!5dH`OHG-R22Ji<5InADW32FkobXAKQX*%@NY{IjIeXwy8s*_wDo)^1`XU}XRauE zMwm6LSjWt<8X;)S>U5^ID@cKU$;}Wqlrp>6Pi}&KAi+Ps6|2~pIdK%^tNq#*-+c6M zWx|-Sa~I;N{kOx1M(knw5YkL7lVJA}bpE}~8Jh?5L@sh}<96D|&puBdoW;;f&C9NHh?*LWbmVS>=5)5r>TxH-*Ahb&`8l zV{x)V|L&R-w*?^wZ5%%ao|CHG8e_irUqVzV)POwbQ)>WHbN&3!J6J1o?Q>M8{@==xgYlY z$&y_uLL@$omTXn*N=lbonvTn|&qJIA^|-tXb#EM7k*9k(=qFQ8G*ARTsP`{)VH=$4 zh1wV7+~gLIMhclL34~R}g_+0WQKcckT6f+5C4{3}TYztY*eqvcy!x2k=gO^Ue)i0Q ztX}#eMIqQqZ^aaCnTxdr`Vil~OD@QO1vN3swuR=dPaGK}1XR{MPI*2WrG$Fw2Qs5f z9t4ZyUj_zY3j=|MhC`|QmXrF1z~DXqnlLISvoxy@bdW{EjgOsOpa~_;5SwX^s`+N0 zrIDZQsa&%GePB$w!-ZxW*@vQR^Ld3KXUojZq!W2HDFcT+*l8q8vMyZaSTYE7s7Y7M zQO;akstkMD#&9TkRo5|(fm2Z7(2zQoi#6 zxD;t+CIG%B?w>IKbt@l-rDao=%n>Ab*%$0>Q~g_3MWsmnaEX(x`nOkK>zFfx1MV{m z(~-cxTSY){hU|wY@7TLOPgUrnBM+dd`0eJ7`9pCX{lj-qF89T;H`4(@>OH@ha9eGD z#$YcWDQkiV{d^_={ocT8q^%Uw_Q_H6oJb{ehsht<@D*qr)>N`pN4kl8HZe2=0u59{ zHKe47b`)#+jy_smaR>wZ#+Gb~ta9HL;{tb+G~zD9fm*uQ11duyRd?lhgb|v%KfljS~hPZ&S;BzM6AYer|dA zw9E8X{O*_riY2(8YrN3BP+`(Z7{U-dR#by8Su1njIyaM_18%5QoU-g#HfnWzW>LnH z`Td|M2U6BK<0}YMEHbw?GuP$$lb1|THL=j(ULt>}%dI!k{g2mMt%MiE0}0&MUIPe| zVyDvT>H^(H%yosk)@X7qgjx(mwCB3^`+jRD3GMaLVoE3N(;}cY9qmJ|s|Ho&HLlB| z())|#GxePkaU+w_(4WE#yB=0Z3@7F0+(E;^Swevvtspk+au9QWdd{|p9$%Z&HkXKk9X5*BvQaa;&~71e5uyO!pz%j3A< zqlDoCvrR2oR#dBOCbOwxScoL53bB>b*D^IQbIK7oT%yC!(4x4L^+x6=7EA7&jffmH zBT%~#l3qYw&8bMG_JKadgYv-{y*&*M*x>jsD*eQawU4mx*3$kX-|YJ{iyxnHmcPGF zPjjI1l$xLA*Km^fn6(7rmS{-e5BWo^`OYvcBrkHiCw!gNOC~|lVbhO&ubITt&O`T> z-bZ1EgK|=6bQ&j+14W4%q1)KEU4aoS6UJIxR5Ins5#MQPWd;BkT_1RCR$maI{VFIq zb;J=Nh~Jg&wGrZkCMg%;Pjuz3vH48X9F5`z;(e;+`iZe%W~rYzQ@Q1scSzjd0r3)( zTk80@2Lkd|IjLJCIRy3mG|RR&Pi8F2Jx)Wb*ZAonGTAYOJVMmdr1&(A7-oQurMVfM zGXu5c>4gYYWpAh|pIj!c`LKY5I1&~Z}P1Br>DR^~#hIB)bb3w$%<`4f1F zN4tQu@R{>zBR_BIg8`gHuOJZ<1LYDBH{gJWrCi*Z!!2eh6uzF&fRoAN&k53W6M=N> zUFWpe5=F4sRT~MS01B3zghWJIoiGA|u<$`y8cX|cm{%pEICJR77IUu0SE_E~RRy2r zM9!K)A5E>Lj%{S}AoWS9iNHC8xTqkbnjE_W38y}ffUXp6hJ1#}oSN9(ct~(t_|ytP zmHDpa*a0}BxNxY)HFOm2a#DU_rtKpOHK0(bD(R<7cHZs{ReU1*lf@1jXf@b6Ms8=J zxSmkmJKrP6p%95)8|RPVc9a0nMx&t}H)LIUVePTTas}2{-qr*V9#KBCNH0`wOeC%` zcPBj7^!yJ))N9XPIw};jMdZfp0!?8p(kE`Xn?e%gIF7DqyxzP7A{itM6MCXb)qut5 zG#K^?t-A3D(5mK(XzR5NxUB6xvI_CWx8n;d8-h9=tZim2Bem$7Ij33|`({AuyL}e; zvzti;ki&u?_9+l7DiRtRI=~>A$XVELUb5efFW29=8yroWw9PjftJo*}F>z$^#8YNg zl}l+>8J`U`bztc zs+lF{5Vlcubruk}orT*JRa}NgW)O%Ho{$m$HJyf7mLHXuEaRV9NNc(?obJg)H$SX^ zw&~G^J58)U_eexBx$dPzs&P8#bxbG3Z+WI(8JTasiP{bX*e6w3-dAH~FwuJ?byG#B zj!LXR7g;HYci9v>l9-Lk<;<=bc5I9g5De!ND}I!1)`0+RS52K)O~;DmVW2Xo!e2$C@@92k~T zV&k5D)utprpigt6dLK7hV{*olFSp`L6@%DLiEzxDJG)OWr5zj$0_1Z@%PGh;c&!b@ z+(vWWzIsKzX6J06W+cuU^8K(VSK6qfni3#CRTL_@&vW5mRr_Q0nFVZZ`41A5akoC< zN>fCboSY=rLimQr?pun3k2Tcs8@uB;Q${n$EAjClCNH^n~3*j{XKW2K?#or4_J8PU@)NvXwD{48X|u3z#t&D% zIj9g6Ao5^lgtKvfiq(7z93B~o>@_Txk_3rbSMU5>D^v6GUMRg{#RJhu-H7KV+L zxQ~++N(hY^(tz|LWdZ>rhr%d2@ADUS2*^&G2L5 zyPtX+IcJ}49l(?9tZu#nV9g3e=3FcPuh9>kX(>wtJ)XfXGh-~>=;Ji&_fm^fz_@0@ znbY&SYANL(|Gh0vbPYoP+q)KWF;>dSSH_udqR;v8ln`ZPWUAB`d|WoZ7hraF=W1n% z5ieFG#w83H9nN?%uu<7Ju~%tJL@e3Kw^m{gV5m-D@6X9e055<*3f?*c7wtIXnEtJg zLh|W&Q}6Jt{`!hxu}#6@@7Bu7Q~R?OPnlNg>}V& zk3_a7kBbsAx7E5AJgplke$yNt&nyVxkJFa!riJ(bfTe-v2L{31S#dc^a{E)1H*RyW zrtBzoeg6wAx@zulk7(7|8^NZYhE3!7vKqTioOtgUH`Dh5$k(g>{kUAZ-{r}8n-a+R;m%PdCupsWxGOaT5uhHH5}cFHE@ zusJ{mIC2Jq!Gc4XbKz1O#HYE;bWEu+iYyD-+B?RQZ0%6!$$ak-zv~esuq9L3 zURfQ=zofV!!@DR^-XKGCmDqfbkmYMV8k&Fj`EJfIwv>yt_LcRsn17 zI9MquO%5coo|k7iyA0nuIGD39h1m>Rg6VmfqDEsQJFQ)H{x_R&6;)Is9Pt7&SA?~1 zGD023>IXXr+b>li0MkW^@hC>jP+SLxGugjBBv*T)PwuhZYh|id7y>(PQyYO@j$;jz zu+efkoUe26@LV?s*1=^h9Tayk(D+Nei}r{7DPjns-ngM1?V*tjlEz%v5m@+jdQZ#4 z;(`<>NHOPG7|87J%U%x{I${Ls$}aXR|@Gm8;9ubuNl z4$YcnG!=WxnC4d&yC)Q7;!c}>1w~D<=gncn1w$QD8gc62VS1A9ED*SeU&{Vhvf^Ex zZ{w11<54Tpk={5~bWDC#{E41AcI`10skgIFfVsZb;r4-- zrp`RiSwb30NL%do%bHr*Y2x(M-yxwVE2vA>lW&j9CW;?pX_G*z@pmS^z745d?rtaC z9X?@cn7Ke7!Hm%iaIrN>5z>V9H~vne&xy;qju$8pCg#Jy7Hizi1M7-D$yi*|sA!R6q_qq2%^FFSU7^wtbfrW*V`=BAqK{&U-5R~VWD$&lYx-)iG)~~Y7(NEWtQ6e-1C#I-3STY%)CdFD^mAn@j9Ze zCs+#q;|WY-3dIE%MJAsYsebBjJV;P3QUn-PsG*ycysNoi#(bpB*vSCd^G>D)X_Rda zRMhhi-m|r*jibLXqKLIIpf#z@3Z9luCtogiSK0pi)5(%0gvK!)!tf zm5CxegX^XuU(ei1EFHIN=&-`+hLo22#1RM`qwjw8tJR$P*SA?&yxuhC{du=vZb@UC zf`?YC9%~grkm2ny zr%vt`b^gz17C1eV0fgQybb1c#y%Q&G^TjC&V;|#^TC1JjxjE6KOJ$pVc;CQV@9498 z?SZ6?9(;LzHJwjqufX=`UVXr})UwqW(0IQT>cz=fWb18`1ui7zt*N$nt7PVEzAGay zgu&8PkAM*9Ds9>fL9}&4M=PMSzr1kcw-~&Zc#CRml#>!W2M$I`&5iZGbnD};%WVcN z^|d_AIRpfj0|a=x8j@}G%o}r-Z+#MF8%k8#W7JQYW z2U~o$?IDB`3;8HAk{FeJ`1I+v@T(LuSVMN^qn-#iCeHXJF@)3x(B*pht4ccBRZK%- zx?Mn}URMOZKI@r9C=P;v4xz`YuRb_}G72J|5;dpHd+g;~?^HYDesivcg6)l!dP0Xr zDV)B4lTuD_-syQvu{79E;Nla_bbhp`IaNqMBqsAHR%ojK`@mm92N_)*-HCy$Kl)Kp zRD*>F1H+)fV`R6wT702Ky7b&RdcxAIB#C8_^{k50(^j@7ISygh7nL{2)>Th1kO-Zr?IasO;|s2xA&&)*QI zxufOjry9t+a4q#{wOx_Mv6m6=kUBg}D!jG-lHq3)sdRDuHAe+Hp00mfO7Yqb0I-T< zK-kDJG>8r$@zZ1DnijlIts; zs_VU0I=>>;dJuqo30sQeGgI@}N|AtD(_YjJpe6E!L;> zqvyToI1dXYSSnFTp7I1ih}bgQ7&jJfBQ&jT6+>AAM=6>klVW4>n(U(d4z&avdBV-9 zuZ4nCfRZU#N-2_aSUvZ!L*_r-nbx3Xc|crEITTG>{!sU6!z2&ov_2iP#@@l`P(tV6 zIL3d$+koP_pg5Slw4-=^q@*~T$Rk2#5tr*b2$!k^Ibkd7Dx->(?^k* zQzAKY@CXxaS7JM9I`Lyta171$<`)8iWe4@R&OF9^;!y267s@N)kKEER?i$gN`J!& zU>6{bDHtBgm1)NZm|u4mueu|sp*-sC3`!2J)4zu9_Zbz$!56%#Z?5vN5%Um=@lGMB zC8G)z>}#`$aefTpXjo~d)LFRBe`b+6wkB3EslCFYw}!Vnw_5BaMl&#|R{`O>^#L-H zDCza(E#+?pSZl6zm??qY9Y|m0>9_CkYYJu-?W7YG|GYn`k5b^;EkvT}#pCSh4Fd_U zYff%fe=zHII}GO3pQp#`)0Zyoq?^ZC2e_?mJAYCH1+1}k7(5IfF5glFobeH>*a)|{c3 zw^IGE{`;si`?8Wfc^87~GQuExFm)gZ983vQKvUkub9B(AA||UP(e5uJPL$4sZIwTe z&oi5U)RmLC!>f9_ZYB229E2|j7*(*3S1gKZRs7jA6GJTB-;|S*Gv7~-zavhsazjl9 zZ4W#iHh3~0%dfwny|y3pMd{6JLUE}?;+|Q@?KTh54a(0Z?+*!*(EjjxxS?`s($_GN zg@7aYLrdP$su;RHtqPE^2~bG|D3`5Z5Ohg}4jB|#0HN{4*WK$1K6WecB$oF3V@`Gb z{D@lK3^|`q1wPwIhkWHzqF$@%=#Pb8e4ZB_)H#I1jkGE?sD^YZrEt{YWN0GWmz83j zTr1Hugn-q7vs1Ph(O@VnzWa9nuA$9-6P+40icI9HI8RK^gBH<+M1`?E64Z*uzh`D& zmG4EG5Phtp*J`a9K!(QhL#AFOy?&&+P|UL_QUH3t(p6_}Waq42-L{Y_qnPA%x0tE& zDuoLfAc)}NtlATMdOcRH&&i93z~g`m3@rnHDdHpW>0_YEq&hw(={=g%9VGV|!c13r z(2(_{ulEJTzNPeQXEAt>X3)TF3-$x+Z}$Y|-+tLsyjioWdMrwkM+?~_#$Q#8WFp!J zpJy>sLh8du^&l{n(VzEfp#&F*3=O8>W_@O1(x`dF#&hMN{t<**?LAzpj42+wfKf!Z z{+61WNUNF4A-?*)g6fJPwJ2WOnzxf{ym6k0EwF#;2+#ZYh-m9fD-gc)$~4@NNj%4w zdn(!>-|X?y&I|WGqstA!b##Z`4kId;JE7r@Z;mM}7iktJ^{dYQb}1U}X6b-HmZ=7B zWWU1RbupbuP8qXhTx350=6$2ZGbY3se4JnyIVDTc_xk8)d+7u_SSF`a*XM6LL-BLw zXl$b}0>5-D*D@j!fwfHNUaXpO$rCumGuqlPMDx zszRMB#RME&`s%eiVcF+2n@j)H7hB<4aYW^==ZX{0kpd=p_k&+H>G{N2Elnm&*<@!y zM%*aT(MGLC4;AaS`t=TzTrXCXzZLEYC5C)bziI(Jv+!3}4(4AnJsE8>wIN1}@|O@@ zHR+G&@LF&tNXEXGuBCc#^xUy2+Z|wqZ2HIt$#Y6UAJl4#;L*^SNH0=13ctr5xeWj5 zct5BO0$uTw$(+srJAVIpbI-~oqM3Qxzf*K)Itsu2D!G~BBZsUU6&enRDVu_r(^>uG zgf8u#FP_R+O1}zt6)7_({u*ewmf$!s zgSZ1C03%uyoKh&J%xnuT^m_zearn(vd7te{ ztNujy@&!4POiD{;T{I&n0tbdpN2bCxO3f+oCtR3WcJAKvajEAd(|wg?@aE>ohhuZJM}I+1xmT4-xUxP`IVMBSWZP?ef4p=h~U)3@t>2oh8C{s zo0X_SxSKU@cCfPD4*9?JE8IS85zi^{G0d&ActwUbwnsZ2&`#gU6GK>?KwYK$zI>ia?5J!W1~ zT79ZOQQA0rcr7He9v3@hLkTRl?*WRb7YfK`X&pNe1kel4*6Hc}ig^v~q-tLOO4XHp z=w6+w-7vcRQV_T23r+=f$*-v;>c}zSyg2^8q%@Ux9$W8d_7 z;5@!Xheb{X7Ro6M!b5xPuKFWB<9tRE49M{t>He}^p{Ql2e|s^2RM9?9(&e4pQJ^DQ zYrzo!+b*(|wfb)?UAp_h^&QMWAZlA;CG0%*J;bsTC+BWf@7;#Gbwr=}Y0QIn>jrn} z&?wWm;4OXxTct^h<+Rd~^*K}AoxOM^FP$IBTvo-1?irV9Y9+GD_!{^;<0y;gY#N{0 zvMydEB&VdUb#TjW@9OX@ds2gp3;C(v(P z@4PlCA4mVl-DGnHjgVuSIegHbrWOiKT(a2)9D5*%}j&CgZ0m4St{{3AUzp$<%#NhW6x8yxw)q=kc7p z`rKR5+=FY<8>thUKR*w(s0&noQBGa|A8;$gVAIrWg2+s3q*L+onT1buA<(Wrygob4 z;%3Shr0CykF-ANV5;Ee1_v@Xw(X=-nvW5o%q(~7xjKD&yWH7ZC)60?0T~>us-h`>S zI{X)Mbs~6s(iu#>)#g?pPG7ge?~xS#qg}VyBr<|$Zw7uas(hVSO`9S5Vxe1uhGu{4 zJNQf(9@^R(&=WLVijL!4$617g6wHu%b#U-5v<&s@(n!xw-8>x`th4QJP$i%1v(D%v zOEph5i&F6SL-(IMe1(GSt^FY`D_0SX#Gkk4L+;9Bjc?6vilfQ=2Jr_3u>=vOXDxbf zTsU1h)B5NR1sb&_|7fhc3&t|IoL}x<7(BHbEoxC^#qpkJ2p?7D|9pH~-?s*qxn6r| zht5O#3jUmdQuO6}ji{M?@-BjNHHICGGO|wzs^b?w81PE2qjMi$+Xq!XwuPT<81%YS z(>JNk>^|4~=69=J$Q4VoEX2;@r{dj6QRuY~~ns*inbd?3a zmkV<+noAtkM+z0JVz=zEkN}GZR09XYc}1l<6hT{j?crOb*OlzrCgAENMs5>Hauv-?5IgYE;R0OU3(S$ z#z+0uF$nzCyKMc6+pZ#a>EpRWaiyZp+&0&1NGWjjrUCt0`G<@XR^K7azx{8GxStF! z6xIc*yx?K*v65a5)QLZ<8ZsK1V-1vcc|)aS0u*`a`J{JORCuAOMl zl|TFNu9co{uYwtfGu%;v{4RZV>T5s8QH|fX#Xgv__>}<79A3lVA7)f$LqjXD2#I)9 z?ZK*5M`uY}&p-NdWe^Y-k$d{n${2dn&p z>w{y&PApn>v;rlpRlj2m=dC@iaab-J{;)}i#UwDh$%~9q;dZzf{D>bNa^dOSAPcsp zl&1^sC#Y)(ym+0qax?!D+;}8EeaONsfqO-7bik{vSwtmYWUVE7O(Dcry9D4F+WNj; z9Pb?y>)Zs}6U~*d6BhNL$hS08^ZEO^+EVMw>mLTOl=3x#U@qZ-GcXoPAjM91FpNi4 z`5#epevj`7#&CJfB&jpdiv=Yt9C>sFM(5iAa@*_5iz{ndC%V}idV9#l;39k9KI|>c ze=PR(jp(A($@ptIlUH!IyGZq4e_AMFy)@sob(-{V?4~%t3tO%e@37aZ`(QGgvE0A@<(XK0uM=CQZ}y@r)m6% zh4T5aS2wij_PVh<AahYTfgxR98Xzi(t z>)J!jx*y&El6ioYRy(06iR>L0Zj@>F)8}^F9|4(3nG@S# ziF5`!xP5}i)x&)~{RE4mjKyStXrnGq$J(sKxlykSOB4ItP>^Um#^uVE`kdKy8_27- zppzDmDQ8oQ4d0nc1NmuEe!l~J^iHm*lj|wR9GDMx>lT6D%I6r=yPx2TOI_W4INFf= zcy9JQFW#+9sx(5qvuwS{GwE67qxHwxj@n&W`b^&Xfp9%_mZC!^emFk4a8JCZ1I~)) zulOZS1R|DFthhPpcipJ1uD9EqQM_X8?uv#D-Z?dtw#9z|-XGp%jM*uYe3)JilUp?? zps_OxrUJz0wEJ8OHPTm3G-&6`42869<>uabNhEFhqYR%QIaFouKa?ILzbEF6#Z1nW zC-_)v{YB4#c-7z)K`AH!udzPN&Wju%sW6US?bz_*D|7AF9iDW=NLIhcVjDYQ^E)(u zNL=g6ZNR%nnq02?>%hEvdgzsq@U<)WEqErOl2QZaAifR$%v97!gcTO#VfvoV!ef6c z>1G)x^_j(`L&Htp1*7kp7vNz)S}J78UZaHD>Z@kGSNlV$W@Ay`{arhFD>GLo-(ox2 zQqJA|F24HGA9!Ea=#%dttGHd`(HtBBR$=X`NAzbh>aft)IuuPS0`9AQkznk|d*tKQ zZ=wvl407%NNPb>1^h4N0`%e zf?E7YZgLxm`Vth+=Oi4jb?Dg49&bG9Qk zVv$X-(Y#xky563k&@yZO!pjiy_SV`)+_SPUuGI!Szb68CEX@*a>glzf#t{e z^^OXjwHBmgC*QJ4`QPRQ^BS*t`KHHN%3#zr9kzR2Vg0&J*gq@6C!5WSUZuHUnrWQXrY(gBZCp9lx z(%|lSB&Pn26-hWyT+TkJR+tsDMm~k`zB%lu;g6|sU1P@H$CkCiGoa^~8D+OyFWn+J z&p9b9p`y()y5ytNB_b?B0>GYTCk5!E?#hh3!a&s6;H)>eq@5^%y|93PrT&BZhNX2| zmu0Z*qjkyF%D`8=VRj0@A@m+8khx&8=kv4?E=t<=|6XO6;d9h_%7=z!*o-2>-qUtS zb^X6H`(JS=?d$)&sHCg-<=5ZjBRIIMxBuVU*JpR`8FVV(*tob^C{!kuN2!_nUnCz6 z`3Edz;Bv_)9rWYtN~<3t3NkW>&0=x)014=;`=N_Mf*MBmwrLBoD1M`9Bi(&Y&lycb zP<(p>`QL_d8B|$j$+don%w^0jV4q`826gHK+>aVBv6-~*7Cnx_2sjx91ax!~U8tqJ z4yvY`;!!>QlJlBpDtsP&3W?dmyyr2!jyu2KulB7hVf?MKB}UYS0b*oi^flwRf!%6H zkdl&L7=CF^Gm%eu_?5*f`BwO-N-M~8_4JrG-Dla4F7W^2sce5UerT@l!}zECpk5Iu z)C^%ub&j^&ErNDCV>wZbPx)1FaNFM(Uut=H+=8WQIc*mA@h?$(j^N##fWR@5p}tN2 z?s1jgDy#8;tLg3EXK`bx?vy8YwnwwHaKbpO=CTt!yF>9D&bCL( z%gbTeP5b-%ZEbBhI-XIzhNxVAo4%o1CVh1ZY354vks5U#yooMgi%8?cx#QWiiGlr0 zS}<#kxFfh@)Zy6CqOdP0;^xCqlhKAt`kle!C`oVwEj_BCdqzHA2nU)BR?CU#dU@KQq80v0mVQ zKV-s2#_&0z5o3>~jv`>4}N6#>>TunwrwW!t$D$ z$7R2Fl2THLW%mmX+$PCpa}K5c2!BN56FpuYE2})SC~;5{GWOID$Tlz5ec*f7KlbU( z?c=!DxJ9=-Wjyhz@oAFJ@I2b3_MJ)%;ih~2aZ)Lf#Jt0WHOcMGbqjc@XhKkj;ciN}U}lsIJb#z#u(0*9<_VIXWKd zkZ3Rdk;QUvVjdjsP}SYpmlTaRv`8GzR@=6cl}Y(3MzPp1D3J{mage>pzQ7cUvG8UB z4N!{gmYB^nsScS?b6*`lPBX688!jw+IBU~DdGL5Z0F%rOg+)E)7TOxMH;MAm$E@&J z2&eI=pj(Y3i<)xu)qjtE7tF`zsuag5eI&avbZC~eV%3S8j4WYJ% zWAw01E5*j=gxH!2*bi-ABZf>rz zAUr202Y?IqCUVOqy(&R(X%?Z3Iy)|S(8SWpd#H+b=TzNY>oYg;?d9P_^=a5m1|+; z6K83?EF;gIWw~0j{bbF@tTvIAS!Nq6m}je6s`S0%m#w$}+NsUpq;C|cw;(eaPCQVj zzh=aKm^c>Udw8+JkEzRh?Hc;|qVm(^BT&RVgnmWv9)2?fvCcrr#68@$+ znpgyY=zjYn%E}e?D}C`CCZeLEP7bPEY;3u3_~6TaU_n<@R4kBZ25B>Pyqj>06|P-u=f+r>`@qj0bzcZcis*;zT-yDc3-nw+7rTOGjfo%LZeg znrci+K#Lb1Ry2Njs9(Ilm@8Jp{F?!fMZ_*}3qk31VXLO5HdYc1NZb=pTL1{g*A#Pc zae*s%@_v80*Tbk^>r3L$YY4kUSbldqfe?WbKjC`|fyR##LMT{~v+R&#^`2!|Mv>M* z&iuBvB5D1x*M6OkwQ-C47Z)A7V`8-DEHvX8L(Vt0U@*6!P(*;ZQ>jwqEYdmzc7iR7 z1MG;uWihlmjdY3hReTwWh{={qrq06l3eu@>H826R0oXAzj=ufIhQ2pFc(kgasd@aB zt)r_8o}ZsDR%*N0c34+uOv2EJ_&g@STXUmZ7IRp%M!#Qp`{MX9hT~&x3OoD4ETgB! zdyk@5=;KK?h(|A5CjD{79EOQ4JnMU}6KeruUyZN^q)giAi1%o20#l*iSI>yk*y(q}vsGDfXl;7aDB+1CO-}B^t_&{@TLSD1o zk876n>g>!OKkpud$3>O+LZrxRhd$ghAxw-@QE{kIX7u5;>SFZ=zX6ovrZI?^c*5YK zz?hu@A0J<4IRT3E@XS{j>!z`_^{f{Va{wAqW*CJ)*Wxa~RyCFfSklVMF~&|PoTH;7 zNQO(@BajFL^77@&r(M4DKCgcb=}(EQtJj3@TY!=?*S~j;Jp7b{4b+YLtr!0~_#1`% z2Y>iO{C{d_{jK1W^XYewSXiP2e<}j8!vEF{lE3|5^>+R@w%h;vE?GqpSTH<1JO)O_ z-ku&XHMNY4OkhrGs_#N9V59w(h2BaZEG8yqbaYf+UY=U}HI}znD``7M$nBVN%&__j z_rfCsGz)&ASMkm+GUO#rNSN@AvQ*jIJfGU1J|*Z>dM!ii`&jO6AW_!)=Ly0ffr^l$U z`1x&MInvD4XD0hs8;J3gg2W$Le`L{ng|5ltehe29IElrjX9b?_U9X_5Y-Db3ZfKZs zI<9N2ZA_Gvn))VFVfXZ+K(k6iP3-{%zw=b3mAjyBrUK{7m!`|kH?V$wQ^I)PyEe=p zJh-GCK<%G0Gc!+2OaN~PFbROqidoVF`CWZ|%loJ9f>*N^4e9U;c0qR+@s7Qn)r|Z- zzgSd545d_n8U-F+DcH4LH3rU?kQuW^wT9wmEW-oGdOgjh2fH-V4|EH^eH$xA?v3=MK^NFZA-W%&nmFO1){WR022rYn3`_LV)iCa{fME73+0;(UJO|bIxGy}4C50%=EwZvntaCWg;-lzSqTd_ zS6Ga_RQzs&OtvyLeF~0|bObDI!4zEpw~wqYJkvT0)2MnlMg2lTTbDWa)F&W7$ta~o zB42pSi@z&m_>dNRanZgx-Nbx54D)>DeR>)4EL2i4i zi~rxoT^O!PIG#hKjd4o_w)5*z6RJ1JsL`^4`oUf4kR#+GyM{I0taI$>c+uI{y z(}w_eI5{2FjdEex zkrxodet@UY`({Xh+MchcSV!jgzIcPP(^zC2d8}b)U_kVsb}-#;`_8F>!^&I&GezhD z#eR~{P=-XXlSD%hM;Md!jFv2fnQct zFJ+wB;aUTozj5~i;m41EW54c4I~F)L7go;G4pTMb`OT(6Lx{9X$Tn)aLmlUW4Y`JM zUYW*ATAB0|2dC^X`np7fbN^Xu$n}~X7pJ=M8GwezEC)^lmF2|5#Cq-g^tO2hIPqQi zQl>%Glanr4*=nXpPTI5$LYCn;4`PZ^-KuY)A~z@0A4NpLWH#Q``L-w!X6&{;SP?bya5xf$H?XY8X>q0P0VP-qak^>8y-8GYuDc@GAF@syv3xbN zor>0NaiS047dke_kLaAaeZBU4@H!Jon}VmNQt|M(j2G*<3#RB11C}7uzImT?fr4id zo8p!wUT;V5C&tM;t(^{oQA(Z7NDi zFJ1PQ`uqEzD`tKF{{7bN+h0iyCjRJ!OguX+HFbK;mKrj=gpo%vYf$@0Sp7!#wo7p3 zZR63Sv}({)?1l1PiXB0G-OnFP&x_W~3|~l*s-lesNR2OdTXVaiWl}o<6Re$Ti#-17 zwuF$W<8t?K=t703W?Xke0_(C1Ec8VRYJ_{e$FCEmn|-2ATxF+|sCnd*w2rD?Y~R^t zAghuuK*c7~}d52;h8MgO(_BMamhe`#La#4U6#XUgU)d3$Xch{I*1;W37z zZ@(4rd)B)`$k#F}#?X&um1HR+mOlpwBWR&Z8_=|hgEiZ+UUq$5csm?r| zsN*hDNTmat=j2}Ywj~TzKYBpKHiyaG9jcD18FOv;#?rcIXYyG0MBe1hC6Zmr9)IQ^ zMd7l-%iN70WX$Sz0)1LvW-JUXgXOm=Q!G^1NsQnc?i?bi)hU9C<* z8#7nYr)$SSpyS=B(!2b1fwtNBx3Cy()y@CN0w_R|xRazF5hGTp`Iakn*md|?{1N$656Wh6>Bvo{+}|quo^d) zvN(kW?CQNK2xOQBc_ldsfgrJg%sgfr6T3wdKN+Vapf~7Tc3yS(Rr=vqTT8_*m#ygh zJxl9dBQW@=XNz7piv9v-bCKk8JgRH#@9#9eqpu=aZ@duN>p5DUyXF*5LU3|Rs_HiF zC^oWfSgV2CNOw)76)ht4{Bj66<7LI-IscsPk1WQqDX$oGIr<86IqP&=Pk!*FHNvxNQly7ujBp$HhP7iAY33e@5` zp9x_e)NrP`Wa-n}2I18mw+i>!1+LyL>^yxqq=I6UNl1_uc+2f&JEvawQZK}w#>M@M z>tl86D?@WjhkaxiO9DD==jOxfX!tiu*Nb&12LkK(n^zCOe5d(ss!ujIQS~(o zC76wQ@BsIFi>Z614BW=@E;Pd%^HFda+ec)ziQ3=RGOPx!?hrMFFh98U6}SOt&Pk46 z2gsiZvHUJoh4mUD{wKih{U+@{0rs2s@U*XQ2K>x-U;dPf_5K9;9UQ>A^Oy$l`!egd zr@y%agTunICx`v*KO{&koh|^eDm*NfI9ZyFKG^s^HJ~%i`f44ON{=-IHSAy9rAOv1s-Y_Dz z1>m{>-1<@XV587`{m_g}UI1rdzAqH0Q^!wZ=yKwp65BC#56&zl7^rjYZ}FeuccL^p zv3DcyfYZ9Dsdf`I9|IVMgh#V=;S%BZ?%tIsqDi~IMkUsz z9HV|0)V;XB5eQr^KQv8rX8GmRjqIkxR+blJYhZaND=vv3LwP24iSLfYXZ&2PWlm0d zmlU#A8?y=N@jt!9*amm=uuW~xr+x`4uQns7qX>aJ%<=iZH!}k?`nS){IE-5*FZ|er z?F`pdif9JnMyTO0x$%0CFKt_0WPQ4PZx)_kP&r$0R9NwF#*LULylu@)yt|&1jQ);T zkswr=2$eCyHK~RAl4XML2pj0YA=$vs;dCGcGu; zwN9@yZ6nSuYEe+HwQj!U5#VAkHIo@*{0viRXYzYz8u)bemM1(l533KzE38Q?#nd7Z z^;!!1*r171dYdIDV3e|x^mE0*!NCC2p)8qW zg>G_3K(VN^ty<8D1C&NQR~5QMiU+Gy4tXWXM(aHfz(5AxXMFHoaL`Jt1%RqFX&*7F&ffIl=Cud<>1i`4@oGwr z-0;Ge$IZKq#TvjpDx0vY4C`-~+^;Tq#u#3*P@Zr70y*x+igvF{2%y#~rn3ZRHy^?G z%5xSs32fYOdB~$6dZbylkLe8}3xl=2I(uHI!UNExpk+?jg`m$I|`Gvbp?-fJ?=2Q?57fT~1;khxI_hBh@hZn!}(dHi^fNodvAAy$sjs zp4ga=OL~2*21S5bjOlOReunE6EmmZ$zG7X7h>k<>2~UcflQ83`6R(=eW-vW@!nFKo zAT%f>9J)N56Y%P7L-Fk)=LC8k4epFL`~wS_AHy1qYwHx>!Xv9P+ZLPgE*w~HC}s3A zIZm5ve*MC5xsf1HG^JndlHH^%6L_KI%yo_WcXlB*fl6rA`?z;PGl5x< z+2r%aAdmz}AuAoLMavm~-(yzmC(oI=zbK=^N-Qt!c=Bwd2D4gOM`y@iF3kuRxAsO z+V{4cRBH6>(_eb5%nq@0f~ID8vE7xW<=bn8qO}2VV zgx1`8H^2v;nv{ZRo=A_QPyPFJ6-%_6(k{m7@$qRL8Aje!6+>qq<4}VgXV%Jxsc(;X zJt}cdW*j@2biDAr-P-w8hBJ8}`17);(y^7oLWF{E!oikyxcLT|LHHf-MuXI$D09xK z=fwr|MH0AZ>B!-Tgz+Zz;3v-G?31b8Q4S=bp(eQKY3hg>`8@x7H-!no7EAnp^ddlv zZP+P`O!flzw5`x>x2951RoRecyC)apW2&aR}DvipOXwQ_aNHC(-Deh41&?BCOvVlOCI+rdA?L)e8ANMsj5)99?9>hm- z)xnzg!*tj>r{7^$rn8)^3kP%LSLG)f7Cs+5*~;RqsCUz;8X! zel?J}E-bY#YIBzqNkoK8U}k?`tWZyO>-qOH|DY|rCl#-AW;P0;Pq17it|T2ai9ONL zRGe$_RBMwB>RSG}MWQTa+|=;=7mDJNO?Fc;9w?KvMxpKvSld)N)5|h@l97(Qq~bra zVEZ3~4F^rs*fp~1%%Bk^$qm{}s;#Lfm(qq~&E_|-9_ZgSVR=x!t=OSIx8M|(iS7)#Y#i50F z2f7FiIf;EM04aM_S{J#>F9_Z+fMh(Iu96U?fHk>9TJc$h+Pu2%tIV!jwe}=lg*-^B zcUJZLhnZwmVsjMp5vKYRbmVp7Dozu|uLjuaJc_PqdWECpid>0|0M+SD(?puzb zoE6s+7^p3X%?c`qa*W$pNf2k|(lZ=NTaG(t&G>N}j^b2Y{E>z4NCW=FnYA`NL6c#6 zGLo!PG4hDmO=LK^I2Dr7F;$-Fx{eT#;(;i|k(Qylv$@aI^P1>novfLnh^nHfl=b!o9TQuFXD8P9 zqLt>*n)cszT4M?yl&B@y-sfsC!_HRN>oFMb?3ZNTaL>!rE;6xDn-@3M3s}# zHk?|xH*`ekGB>Kufs6=PyjNMq8M)B&4{6P#vo7s>=c}CVgwcT!33X_tA3?C1R~a0H z@Ivum-Zq^Q9$)V0Rlk>8GsA=9tW-lH!9Y#BriE8b*uWyz(k&kc1*qP}Vj{jl zQ$HrlKh7Z78{PbOktpIUZauHv3Z7UWPSH4B!2e4Z3(}Lm5`T)LAPBqOP$`h>PdCJ%4*K{F5-tc~WSk)HwR8 zZRzNrO;-&@gB8ki+s%7&8+kmt7Sw|*IR}IWC5S+HXoEHq*a=sgSjS$osGF;Bf}Yp+ zJ|k*)&0lIoYw`Jg{_^=#YGSZHcvmET`)$yO z2R-pN_WyNGFqds&%yhAoDxr#RX%RgkP z?6qK*a;BmJq`I(QP7x+;?fFetHB3U<_HDg5Lah9@FuoMk!Y4RPF}!zgk~67qiT%-w zn535d&>;>J%TjTVyXWre+-qZX5OL{&Z!ysU1&4%CMuIhBlsz zr6W+)u~cnk?c1628taL#B4xFrg4@leB&L@IaLS0{w>u4`!Fd^7(1BNZiiscmrtC0E zxb*C-cn8cchdG)dj8|svU;!uFLv(FmaO~Orp3s~P@dwG61gC?Pu|hwwx<(vJi;?#` z%hrl6jQe>4x>W^&j)P9-X*>~4ud$MF{F@=qk|Pu32cIP!xV^z~DXbWra%5U`92>Lw zBa6n@tI)bKtPkO5QfX6Lq%q3yWSuSj(0EQ8=cSMCdM%HoTnEiYh4%E1mIQ0Yo7+N$ z_aYB`Vq~fIH)R6(8i(i@PVseGNE71ZGnX)y=A(iG%Bsej%!@8=nBK_{rHVLDc1Wl1Ou&@^UKpF3ZCkGEWb=$5fBx-0PSKD{ zX2>5|QDzzW-ovEJ7(u<&pOEc|h$>VGK?D(Q}d53b9 zxMswz9(D>TbtkltS$SqEFsL=ddIJmB8C|(i{0N8Co((9h*5R!gX)}d%;rg~WBUZ3F3PbEt(}6o)3?D)wD}|X7Sax{ zhWuInj%r+`mL>b+*DGVD6Ru|pT5n*X8cq1^=7m)b>xkIhZ&$Qh*V{Lso2>=iK*)rM zO}_=M?uu}tu!+smFHuP8tvz_ z5UA)FB$-Y&*t{a4m&*hM;>sd<+tHyH7CL zQ6?zK;pvgJU0>1`=zH5tJ+3^J8}shjr3li`SA^Z_?kKteAk%meRiuN!x{jje5l5Q2 zXM|>YnLz;^(~gI3`mGV1jrKl-V&n?7n~dwl^AF8tCF0@n0RbGA0SL$S>J8B?2!|1I zNqh7y9~+lHvPi~%n2{umH1VJtQOe^@w9RQ0vlN3gi%k+f_AFZafk;}6-0p(v(`xLz zot>4o`VoYt9khUTg*-thXKXX!|0{+MqW-|vHxVPesJn^EE9o^i;1WAmp%6*k7RXQY zeythyp;1!D_^paI2S`28IFAFToL@FyMLZbJhojm2OPOEaIjaT2j&!fp(tS-n>aT(19GB_yS(CjYg(?Dfl4tMoR0OfXQrhVKai5(-)Y|$b(a&o6c4@!S7QCd z90U_<`{{l9^ofLoBq%6|%X)fseH|_VEh{U#fB(L=wsv!KbB((|Oy)E8w3&YZHJyTK z3fcPZgFo*dShhR5EzZP>6>blcDYA~r;ejS@(^%xWb;;JgJ4gI*x)FX9Hn}}B80)o1 zG!x^5>Evzv09z?=+8(d`2)KmX37u*wtMkj`^@^cK>KyvrUEIfb&Bg6!cj{ZBoW|FQ zcN0)?W0t*(1sjb*BBDLx>UoPMWee*sjBGWYA&vj&Md?vRp1jvs+_C_*&i<23YwaXBP|kG0y!{Bbgk<7Q+Z|LU1Uv4z z`imzvNjC3aw?E{x(RQK*lWd&28V|!;bB}^6Ul5S=fqS%@)8h|XTF;B{g2yWte%$_N zi-d8Ed#t)X_q0YGQPljIjU&lkfXQ{jg|?(a@^PiozCew3`dLDmT_W$&hxiV4oLDqt``>@u@xI0CY;B9`*JPU{So71(!$39Xv z#cDpzeMPtLkeJJ7+i0zv(^);l8Lj1V&+U+y;&v7LH0yiEwJoyUy$oumP?6B8KXqPs zzmk@E-EOXi@A4sR4B=OO$}1}3pG>x0Vm$Lg2bZ^hM~}8N;ng9Mng`qv%j$~f{Y2_j zrwdv=ws^}fGIjU8_s2>SIeHP*dj^C~yDS7))364un$goBYu!QVd7$zoUPNBr#!_b# z@p5C*9@LzMUWrAz%q^JfuPjysB{B+Gcp^_)qxQLKjiGYKb#Ev+I9v1bZcuzhCe#+Ra~Wmh?AmJV)F8d^po3MI z&yxx_jl zEv(gcl6`Kb8C~&9{11QTNbjpVZGP0=?{=d)P{9i~9{qFMep>%TKS-qr#GV>imv6>@RNUcJ-Rwb9eF-56zxk>oV$dQ3$#PHu~XXV{pE2X5eG$`$Saq=T**@z{rsd0;kggXk2u8_(g!U9XsGZ=Pz`Jf z5X9khehk^nm9J7ExXpNw)TXDTifni?_F0f-y-*p%)4wFX(sE+Xim10<)!59Zywt6= zeQv6;ln`;9k_8ay-s>!Z002r^UOu9zsA#)sbJG%x_wOwL$VLpB0WvQDsP`OFC2-pL z`O2Q9M zx`qLJmjlw#EG6BuH8!)lx|;ME7T~GB;}^7S=CQfX>eK8}Pqc;N>TNYg%WP*ypQHsW znK;^L7mnr92{?HzmZM003W(t>$Z_(r0#D)Zz(6X@6GomgrsK`N&+QsAz#lBAs-t=j zW0fBnZFi&C(gI-Mh@#yv1V-yDVu%Y&&vBOiVx{5e{tB;VX+S`asLSWt(XXnm+M0Vo znfBkxXoF231#j@Oymxq$td!Xx>jG3T3&mA`Q3}viN+0)WE?7%IUUp1&&d6$3H!GEx zor;L4rgq9vK6iO;7+Ax}5%B7zC;%h0qo{lF+USiL27Da zcXxMFQyRd}0N_>H#?}Appfs2R4E`A9F?GRYU}d1KqbRkw#XII%S1OI+wn^-ZyRB3a zNqrt3(>2nH3^J|`8c{7J-oXa5J2QNQu?Wtb+RGZ z?&yhU9X0#3>%|LXXWx;^ga6ETJ&%-Y62z)t+!W#+LktcD|0_PX2g+lAWWkq+T**^{ zM^K9a)uPMn1*g+cMoLigFcI3kZ0AY=E50r-gN)Ti{t-AcABk?0HbJ7H0aw6k_~bOM z0jXO9LECmkD5cwQ?3G+(+1B{S2Bu(~V&T%?8TI$#b90FNIA328XXo#)pZ<%Bdkg?9 z_xIh_bF)v}J&!eUO5-`NG9%M%ek_6>P_iZYgu%^p6KNgNWRUy7StA z6Iw5U7*)@*^M&7|7hX^==TJ~kkg1S6i$WYTn3$N%Asl<+_$B_xB9ES+w5=zBn}6lC zrvPXmO12D>DmxdYX%7nk=G*B(v)mM(NS|C}Gwq>y8lSn#e72b92mJdFdSdKm{=pnw zVjfFu$$-<&?AKC~qw_i^+v;D?>lW4vJFK|&b{=R|TayW0U62mIjz**(d=RX<}10L_gajHIA@dYmvIiuJ?Y)(ZYEJ88$LT6t`SKV>{$O5=w*`>^K=UBK4IFfv`u+P!JEfOW-iUUz zUWpnK5HV1lnL#CW-LS(As0Y(s~w6yet=~*o@lb)0%9uGvHR|Ng`+3MqVl6KfY*~L7ig>b|Hgm7S1 zt^zlW0{B;}RMUtD-z=IC(Z~ybe4r3i=E1wAm&gTyD-FIIXaoXEw@q3)ea`!DKm98~ z6Q*r50AAyL<1PTGxx?T1}?Z zg!Vp+?8E^0PjT^Qn9}KrS>XN?St$jEM2+C?Qg9vYG5)j zY$mFQTGmGfh$Ff=z`hD#{%pCqi8buJjbQv`o>#AUc3`#CxZ1(Wd+Y`d!%t>zHiRI1>(weLO8PEp1vz$$>5#N;hhh{-vVf~mI zOGVpF3yDo--DrUOlgeOqmf1>iR{@+1Wreoy#zxAVrckDAp$n@?ITiO3+q37A8S~Dh zzf_-~@9urcx9RRvHj?e|;6Q-^RC{=@?jFn(YNkBm3%4gtk+~;hc9#~VTRMS_Ip30DA+*$Op9^d$6CVy^>K)>eS(**avf~DG=H2 z!5y59XPt+Yd#$+tY}_(GPDN%Kb{l8ApIfObOE@boO-ciR>A=o_yA}=kaKyVq#Vixd z+@c1H)Kc4~`GZbgXzF_Q)ztRENPY*t)ADt#>oMgw1z=$aL-wys*>vDDHs~0BYM!xa!|a|8 zF0|9UbEpsTx$x@`Ixx6$3jQ_lZuQkr?tDA7t;xll<_W-`G~E&t6jP9W)@kQ=6{6iv zD+7TX>Sm@qOy0_wX=-oxIlcuNxXg@fN;D;FjOxt#;zV%L5Y?B|+tcSB2mo)n*=*uiGA2G>75%EXMi1y9$ z`w4n2jt(nkKi@0<#jb^|br3hsK5t#A@WpO;vR*`-Cbx4jR#bOV4KdLu&t2VLGpP2!DuuO8 z<+c85Vb18EF&Y_({MUc6uA1{(2T8m3I72tN40U1^yWJ)sN41p-bUwYoENdYmC>D0J zjAELBkMo+I#1oHOB4P<_;YS`{XP`5?( z6f9MEKA69O2y9HjF0W#tV65psvQjxsOzI|0gx|L*D?HWi0{+6sp?~s{_NR_>U1~9KaGuUW6;(1H4q~k(Pf4}E4Hr7Mf)u{ z#;m~m`!sPYq3flX`L^wGD(a@aEDK;+T%{62i_m`F8Uq#3xKKeb6z;@{`((RnJ=w6 z^IvA4`2GV`QIo{QPF1)U zn~c}BkiIrq{36AO8w85~58(MU_E-Vd%TzB7srAmeyGE+0aYQ9l_F4imO{irUUtKzt zKrSc2JF5Lt?(56S#ORu;8UOlzX&cM zWqW3dh$7m$GEl(&e1Mpc`m;O0H}d!X9xUvly&U+-`xfdRp}&O1{uGj_#07a#$vFNI zz4Y_xv~eWSVj~^65$;t$>dqP<1iXZqg5eRR<$W+XYS$vXK3Dpr#s{ccCA_LC6PrN1 z)_+rwQ1v1P={3Q(9i(aav+9p5p1zmm*0ay{4-D(Gb9V9E*hoiP9jC@+Kn_lz4ig-z z1+{pcUVV-8C<&=B0X{wRDTeTesmq2ss}M*kE$pdZ1T2nORxPYQ;a_ zJO+jp%Nb(y7w{?uK$s6A&U$Fu+K_b`WVNRy()$$qGYvv7p5*1`iXAs{adMWZ8g8g#weLLfbz^w*t! z{p*0tDn7Zf!{L=HfYLtD#HW*f#>_0}wD}c?xTg^Xx4L3ZS0b*DB>G|SF92Hpk#5rT z`EJMiYd`TpBVZf;YX1k&W=R`5#PuN`^KXCu)Ehg48-E5cKaM^CR>5`qadYr~Lpp#U z6@dVxqX5sdwQRt5sVF4jvQ%3Ec2gf3L58~J80F3zPPoO__B7B|=Uk}<0Dh{YqodVH z8rNUDQ%2v2U44UL22xdA`~kph!nli&;ksVsS^IVaL55ds$CTv1JK)y=I;bcwKiJy? zrvbDa{^MzTq`+~~_9XD-QAAu^oUuX`M_ZS~5{3+@vnF-V^PMd@ghlNUXyWUfm+8*G zIdC}p%aOU(|3nRif$pq09oL5`n1@@(124CLZ0Wui!%6D$ZK&5wpw56Oi^ z4^JzVeLqsXnn#=2bT&<8o%_S#aNxLPAe3rW7_%xVCB?|Va1R$3_xbawKYAfn_}h_! zq8jPkD=I1gO6jp;^Hv@$ZKzguAeb9F*l+OQL{730|2j@HRmL#lWW5chFRWeCH9Fj? zf+Ocj7KfP<$G{g`#E~mopopDn>4WXt+LVy@I-+FmW~wzCq64v)|g*8b^jZF6~1&nmm~ru*%&co zK1g0MkXe$0PSS3|@2~BOS=?zTHIJ{M1r69dv;${%Vla!uX)X>co=qQT2_HX(K+Md{ zAWI7iZy_QgBEV;WB%7f8dtjlNfO-MmB49vv`CI&v1%piCU;+vt?a#@<;OqG_=M9Cm zg~ss{69Ry#1Pw?og;MlNUNJbGnibACmsI&DR+x3)5i;6(mS2sD78|y33Nh{!ryo$n zlaM^wGjNiPYAwr}(43Wfy@R#7j7Sjr^6L;UtRDg!y%6Zm&&I1$q*s7xO8}@Y5*5kM zB1l!$INUaI$>TSCxT2xc$KRpwxW2c(^rupN#?L7^g9fIZ@UTZ_D%$W|s1ty?wi@Qi_#u)+H6Q(+T~VqZPE8{V~$_PL}Gsr@NqsjK9Ju6f@W1#Q&|eR zu2kK$2px4gdX8`uXqFmqCFSxTKmChoyi~%l^pcDmCWfGh29ns)c;d=N+flL6x`Y#e zm#CO#WC3GbT-XmIv!~!dCQ~8O5ryn!Ph4xM4&KFV2JI~^OBgpW8L3^4*|%mHz9zV_dVSQ_a9PPRlKNC&s*lxywafS zjEm+}dxgXulRmB7sOSe+zQ6ZWVor{nwl0cQ@_Q9wW`5Fg8%{);`-N%E5K|?S-mv*58njq>=D2+ z@fK6n?&GufiIN&YbOQkX0hfC-LT7J(f%dUy0^kl_E%SE0vy3#FPp})RoreN>4^c^9 zts;}r-xmy}dpg5fjp+3Sd(e4(Lul(7CA8;EqFW)H(4aq^-^$v&)dx;y*~Yi^M;3r* zXl|;SJ!ar#uUv~F#w_o8Sxk1x5RJyOt-ae%J1g9LJ_zbrXiq2M1*+FA4CNP zV9yyF`eVB69NjSt3+JMrUBb-IBUk}qM5a;GHQ=%GUT4<#w%aAMDxyrZ33<3I-Nlo& zg|zZE(Uv-j+-`E;$a5Lk@u15}S8rbC7gPrgS7*xJt<0{9onl(PGn z{u^&^85PGGbPMN1hyWqDLl`W$yCq?O;O_43?g>E#4<2M7xVw9Bhu{vuoxz>qYm&pc z_pbG=^{#b)-2RuDo+e%WbX7f7d+#E2X6zO#^OX0O5KUYdTyYgC#*s%Wk7`ZpAQ;hp z86oDx%(hi7_bhlRM7`u^P!3x%)*py`l`dX3$kA$vMYnl_nA=;j!|7%4k$#GVMD$p$ zg5Z4Xf~!1d2qdSJS0C2WaC~Y80$T0~C4mIi2-kWFEs&MqE% zGX*d~s`iwRDX;JbPVP9Z`uVfq8(#t?b>8um!Wq{Dh0Od6iXvTgPs>1sxFb1d<4^da zl5HI%G*1XmwYD!BuZ}b5?jmv%RT^?yy}$!-AVFwg+2;q`ttv2h$Hm<>DIc_OsDnodNTQKSS=xPrP~CN6dpk z*mQcT^Ct$)q`AqcCbLxPqh?C0mh)PCj`PWx1ZGN;(76h`L~7g6{Bb}L@l&N4UI0nn zMUn4m->96QN*AWThqV4AX)*E^cltW!MI5Wo?gBb#tG#1^nPgUgu!$+?;}gH2sP z1p~M3^cIFH=7+IfvPjWN4ZJfMlj59&4w4MLqnYOfAOTvvRp7>Z=xX^$*chg%Y!?8l z%|7r)oBx*8n5c$_PhkLoh{>UpF9t1?N0Wf|Jo5pd*F>&*l)721;)D!&Xm*s|U`XgZ zp^+hgWG>&*#I2IJUV5;_rQ`T0d8LHjoRmMH^(#JUiN)Y%oDGwa^K7;r_|l54T*nNk z?oS*88teq17>C7Kbvuh?zQUPmJHgm;7XO-$ptS!5weFB97rQc5*p8nnISg5LP)i-a z8(@;ts59#~!~R;R-6}UeH)8wp!xUW=d}C7M#02 zqOe;$-o7pjl2fa8WSu-!tIur2HXL=UZ3@kbkL0b&PQ=X3ynObtIdh^KL;#(bgG!5BW>AaxmNo#c-~Ry{{+46(jG_VA3KjTgFt$rZ$ic; zmYIE&DX7G0@B;C~kMi69p({jMb9JjRZR4h)!kH{X6b{j;sy&<>xQh7k%-T4yBhv_nK;M9T{rsg1@9 zw;w+;Pv3jrQx|pK7~Q+u50aU#myd@CXBs|iu0@rm|FDY8UYL!GnZ)45Pab@ldN~TD zp1>RpJf3|Ity(qC3WaSlBnJgMv>^^D_rnHaWe7C(y96gkbNk%2pW;-F7&ZW!!O^wfAQRDU8;LgfgfPw`A z{gIeR8m)Ez#i!akwxRWPJML!03>TmWtY9h6{|>}rV6&mI>nrMUts#vr}%?Eo%uu{_|N9kXcNm8?&HAcV@_@Mt)8^1`QUf?0n#50D4^nD(sJXW+&S8M7K56)UkG0|2f?Zk3O_gqf zD?>S;OoJyT{~nlGiBXrTP~wj`Q2*iwW)~1595pfo#-2@AhlC4vj7KD82f}wh{H#iD z!cdkmPLDlkFI@*~I-p9E?mJop) z8pF)DupPOWre#{n#rGXcjY7b*aHAMn7N!A{mi}Qtmq~3?DWa}g;w^zBIOJysr?K+u zQ14Rt1!MArYrO?H?KCnlHUxuWkM_-g)1I!I$qv8#nW{x6vNVSvLw_0iK*8X&*U?Rd zGHX1eIH#tHOG#$!dgnGMH?7tsb4pv^K!V@wtwiL@d8<@thBfKR1}EM=#O6rrk-GfK-1M+aswEQ z#~8EV!u^KkuPV)VMOj85fB^KI`t=^2f(ib>)w_X<(|Bkxh%rVrU?>lgYk>UfVO;=p zm=XN|uT!jWHiFNu1vSUUZ7+`%gu~VmP5^gJ>gr=^#VtRgiC_V|bkI*XIq!cLd78$j zzUY#|ND**Q$uqt6Ke2H$&E^Bj2)_Ud^P``n!kV#h#vAqJo+I6MXu&AEF=H?JcosFy z+fkbvedMZW`F{Y2Fuj@|p+6Uv_EI%^Hww+ z{7>=Yc*w<*9^xAr`G!D}`OmLJ3x3^vX-1_J3Pp6mlwi&Z1dTaI1s{o zy4f1Pv){GG91gXw9eS~ZXDoJd!SD9h2isDye^50*>LV zs7DUC7NEA2;GNw!PEP$EdwG3_<+DXrLeOXZHir)LZm~-v%)~7+zGoyf8@sCL=#RCT z|EuLxDV1;AearbFRxT*HU+<0+ap)z;eVYLk^hA%wfL#Qv5%c{JAaw@M5q$KhEjkl_ zk&i*_CE>y$f+l(vx3`$y-m=-irsT=>B_FZXkINayJjo%~0sG`6nEiQO()Ypw!x>6V zV7oCFCm8VBmXm;mg=HWG=bj!PkZm+H*UnpZs2+J>U|0)`a4{OU(kyEf9(e1>@EmqY zBgxk1`6kql2HT=oH}r+5S`aP3c&|ejc4)!S`AdHPEjnQZ#txSKyPf$g`X7La;y?QP z_y5@OI&u%>`TzaImpFa^DC=)b{U3hhnuI=Yz8nqd&kJx5K{(9AIArsL<@7l-NTC6k zCPgD(BYek8?BK{(_(WC!FZ}-al`E36nU~3fQE;kz@&(D9qKj7SY=}Kli zrlNl6j8?gCE=j(8haRL=^)}7FH5$^$%@R$+JbNRW5znh3qnLc!Ga`hF8jR)?JyzY6 z-9WZ**z)It1<`3u>d9&H@*81AE3^JI#bpE#Q#v{H!4`&^qWhh`nZY0s7Md-xJPre>_d}W?&}%Ku+rN?s+_jr z%|7k3+9ek`@(Q6DHb9bA=QHL|d+wuXt;&*<%kC{c5~h{E;1&ct&5nK&T3SkDJz z0c91OSS>_lAr+>aT#rQ&s(|Mi5*6e?{u{|)cgOC!RmX)jrVvv}Z|GTk@m;x)8@ZFo zWmF_dk;lX;Bu4->A~R8__q;MnyJECqUWR~IDd)i!N+9CfEKTW)h`;OX=jus_L4L8! zs%z$t8rParE6ZWoBSQVj7!d7k*2RqK8&q4Zl(prA=WTvAXtp;-6gy!VStu^GT@Tx&c2~4 z_;jVlbvF53?#Sz69+r#du&Ce&6Gy%xkc1T&{myFEj#2s z3eHv!@V@4?EV>l2jH&pbffuo8BtAR@1}yba1Zp7fDw-6ZtO!z;*G5!V?=x5S*CH(g zl488I0`#EJ`4arvxZ()SJ9?pwCtFJY`A%vy1FRTHCk)0<@I{atTWgkhC6LG5ANr@! z;5g3o2FsOp!>HY--mwI6FSMbiwlL2SUF@U`sKDGmUx%5KJ>?@WReL^@izaGSyakOVo|BP^lpo{g9Z?fk1Hjh z5YA;TX-LL0;oQyad-uIyp_=Nh3rL+4k0Ldx>ieSI*efdS;mr*` z+-#__@|G=49?-FgAhB~Zag)4Wu_1j)k8#Mg`9My!#=`rtvI;u}o~0Zb@@qT90*$)~ z$@G8UlwY#p@pTg5#$Db{*_LKY<3Vel(#h7-LLq@-?P}h01X~S?p_d2WD!ey~bSKij zt4!=OpkZmsL~?Zo-t&<6`_UuvY^XICNbqRd}xP@%4 z#(dlg-kb6RB5`_-=Y$7l+jS5jq^17zHcdJRWViEzox)(+&vCK<0G!+(zgBVqeM5n5 zoMapha-M~V7p1p)BM-I^aLuO)mwcQKh$ste|5exc9l_QKbz=V+R^eF`|#*< zZVezj%2%!d(qoP%6$$I_?fv*iS4BF3sA3!NxHy7^N{cLg<2uao2w5E1l!=GDx1HhV z_yS%8DU>JLO~rEKjj{{swq>ezw&CyEKj+7P7-e3&TA-3*7U$Pjz>UEz$1>icTY38I zDR8yF>mow-_S-hBeI+!QL4kK$Cd4_Nk)N^hf&rEeRJtx&AwcpJMMX=_pu{uguAZEN z!y0@BOX=P6Al}Ra6sjipw{d17h*asPoMtA?Kdb#);ZK@=!V@FACF?p?YS%2H^OzTE= zzE#+WDbFoBw!_$aF3a`b6F*{p#Fd`7jCL*f>kndb8c0-7@yukUd_1O1#?Kuhgv* zCDi~A;5YoWXT*v2BU!FTe!O0Q`ryY{;vE>(>ap+Amf`?u404BQ@Xe(Z?}ARUw?&i0 zbzYv`qMdhki$`kqMg!|sgh6@6vQ&6c-dy#ZcJ~I)A@4>emX;-YxI^2;cLoz!{Yuw$ zrYKL~bh94iBlOW#7Uo{E;m4qHlpgs>mh?N> z0}#+B_`5FTH8o{58)*)@gbw{UAO#*io+D))GkglmyR0cX#5Ash4K_XbiG9?0`82)! zzb%rQHM8iL%!?glEcTrZ4e$6ioeY#_R6%Iq^-Nz`6|sd$ZH70S2(3iKyY+PSCAGV) z#Umcs*CnBOf>+IkU+SB9WR+ygR?m*sYF~jsF|1shEbEb9$1%spF>$|OV|96_)2UU# zZ+BAzDajI_aDpY)AB9hSz5hB6Fl_9DHy zUfn4^20bI3`QS+5y3Ou%;@u1U;c*@huOuG&(}Llaow}04TLLRR-D#t{!Sxrb9wck@ z*7U~0YT~n5#F5XkQaDL+=~eU8h!RKP8&CM=bEEz|IE?#(H)XO|?6D}feHa4(*5`3 z&1hWRhLO2^T#u|Skp(D?Ut{sn{#LIPOx4is*&rPTws{}F9T~HX!5DH6I6`)mjZMe> z(#@{%_`w!Wv*MJ|BDPl-b`Ql9^V^&d!xdJ|p1ZH{i=%t0jWCA2Zy&d4hrYr3E?XeE zFjyx-?=-rb9Pp!k?^U(|7r^kxy0Y4&?iZGx)1bwl zAwg$>70LSsH8Ju&0_j4Kvny(!l}=|vX^YND#JTS+hAmk-iR(aB{Er) zo>VgeYw5ujAUsqYC-&n{Ph{I7`t2jWkV5cQ{ct}FRa@=U-9W%j+I@^KAGc;`6Un}z zY8ouizJbo(yU(Gt0r;vJtdH7N+h;cm6##F4QDc!{qA2#8(JZ)rp*DEA=y z2C4Gqu>&468uZtq#vX@F`4;bcnT^_lWXUpavOf+dsj_=dM%yIaBQ6 zHH+1Y?dHFeC^;V{#nZheGMD7P-C)f2dG^GE~ zqB?A+3+*!$;pn&mJyA$#ArXpZhqtAJsr zyGMn6k;UiP2-Q~K$a75wjxm~hxaK}^kLJ{u_JYANrYs|zFrvaH$Na1MVvgpW4su`w z%ymt6p=j|KSpl+NPvAh59WpVLtDVD6(<**dr{dB$ihVO))#6dWioAxc?1rCzilI`h za9Fm0oWDBI$WKj~!BQ8`=dWF@6x zbV`t(Adgo^dayrjMXb}>BJa=8dLSLR1zLTem;2_4Z>=o3UxYH4UU3x5Ck-AUZf%!qSNH$|yBm19t% z<+!xt?8Ud5(d9X20W)~b+T|f)dG^35+dhJ68^UY*<^!0AWI0XH=;Q{kj;kB41vwCk z@y?G1b`i7CBwh=DFU5QV zzH{#w)jnH6RDZCA?@`i)N9x9rAjkAAk5${5r*R-{EQd<>IRSdI<=(^<0seIkiU*lB z;w5i(OLF3ODxTJwJ*Qo@7#OPAYL%{gBf_z7a`Km+7{SK5gvH-i?N;!jtBJL;xz*pg zLwTH@-=T!Je!90o%Y0B54-$bJ_hL=^I>ysPE^4Pm4WVr?zjpV^05*>$4<6t0Kh$G# z#S9BM8tp4wu2;p8FO8n^x&*pyS!ep+ta$-(ZoiV{(WCE4*+tsT@ErX|E;8%uHGGK4 zZviRzB!FSlHihE`#3t?j!=oj}z)vKS&{K9#mo%Ou=}{lROS>!+ayvlUmcGZwo5ER* zB!QK;`5`O!(fNZdaFG1PGWD2Yd@eb1xj0Cj+HcT!!JeG`_J=EJh?o*Fy>lE#D_^@8 zPu>IX=6iLZ@*w{iRnsL6AQb`gK-^cmBcK}qQ|La2gpFp0Cnl;>Cf@G{zCQ}N?=~&W z&CLM`XL(uKn3*GGA`?zXs$c-94|wpODgQJ~yMUkIGppR^$ATsI3FZCqKNTJRhe88W zCb*iK1ysH*`&>8V&!%3n?#@N#bUCA=zHfY92JO!u`MFXwl>S;yw#x3o7C)vn*J73n zitWVm62`_RTPKFwyz`pv??eb=m}Z3cFM12&qo9REaFiFwepEc0g*Xf}AdtE2+)RMi z-+IO8u8%{X9ANB_N%HkmD8Zpt3G~_5{k%2Blp;Q*zjRmuH?62-v?VzG|nm{S9(tN-efzfopG?Gxst zVpU=FRjlLyopPc!VwZ-4gE^iFFh~VPU0c6$vM6s%Xt9M7VA0~WfQyd z&juSyR=y`Jx&a7Y)((}RwV0cMMCo3-PSYpS%kB@h2+NB$@E{|?In>I7KFh`Tnt~pw z!bi?Mxa#8bzI3Z5uqvy@#8))h&ZUL7TBwf6c+zq~1-*)*XhGrQMO&q3a8O#YO|RF9V1#bZ6P#?kszDHbOF zX`bVvoRI_}`OhBvXZy+Lj+~+%bFRTKteIxKSMs0)LnRZfavP#OGxHBX3GndDT~&_U ze4*Ma=iDO#DkQF|Trg);r^W(-=&mpw59kU#L(8ms5xx%MT;MN?3{nH7)unx9mIdeJ zD>9^M(ayfK_uvw<6m{$>w`#)W9~?{rYAc3nrd+JN0sthP8bAPi+I^t_bigO zHd?4QLflljq%|@6ySY`2bXwjC2Gmn=U04err0ERo^%jscEy)w|;QLuNH@@>2%!zy= zWVbil+9R(C%sg*Y8MKx_PtMKT%Xs(ad4KMbN5L7k?CYg5io!;f9bb46xSm-rxu%-v zl$4{Ghg$%5y2WiTv3v_uTb6ldDn-ZrK4wp#ieXI-I+^cb+BuS$Q4h^j$ZNO@4lq`i z?JNekO|!pIh2PjeSyaq^iYU^g3Cz@B8^5XkpjOYS7htvJq=dX`VyMBFK;5@mgud&b zRcf<3Yos(D`BQdi!vD31V&sQbQ3N|vJ_ABiX*#k8TU1p$I~Dd70!u~^+^%D9=9 zI2!x+Ns*m?23HGoNzoUX9aS;2vR(}s*IQi_UeI<1eaKLX^(a-CJ0fbU39LTy8EUdP zQHQIBumP?jMqpR#su0z^5wFoSAvt60qPt!gwnP-%MgHfqk50(=bhhoZQ@eLI3X<$H z;nn!m)M^_DG=`PRNqZK7c+_O8YuWK55{)7kh1HWWeLXVf4Am=n-{ACg;jAL<=9WA~2mz zH5Uo@%YNWf1UBG;qv6kX zCb7GD=5%IBj*bPrO_Si{b0a!wN{A6?dB1|nmz z?hbIZ1}DZcjPPr1Hui)efzq%&)4L3rc=oeCV zJ8Y4^qw`zAv@B(5yK-OJhwZD}4ZgmV^!H28zr&B>A}m+ni@0WR>uQVr&~AeircMSp z=0PU2{B;Zs|J<&N53l3x)u{-fAc~y3j_JbhaICOaZpm<5`{UO`ocD-WAdYte zA)S*TEIvMdeTaz3@e=ikO=|vwE%Nx1)r;aIJe22U>f8gy#??RHcOih|H`4@57QFyB zL6PFbLd}4pq?w-0g%^vyC*k#iJHww-9&MH~I^s(FlLhoAfrGaP_}AYrByb-jeHp19 z^S;sEhABoY% z{ZqNsJkACs8_pc3myJxi_HAh#j=SLb^ns497j)TYq#;W!&a7hCS5Mx%dlESUcW*-s zM&t(;@8t&cN?sjZiC7XsYo0qnrZsj#y|zf?54TPwJkhyRDH-|nYWa!4lp9gaVr@aACVq4pW!;wlw{7@4i|B` zu`m!2MzYW-uddLN3?W&NMf~`52nYzt^W{cS7u2~uBjh^!76R@{=A3yWp%EKGvmXP_ zDblWde81Omj0!@55ge2Pf#xqnk!4IC6S?T^^;*RHC<%KHoQA8@0!73zg87;{$qq*x zlg_w7GOLW7bz;J8L^O6e`-2&T8LpMFZ_X-|S`{z<^B2`v<5V$2Zs10q$u%y?m;N&; zAG4{>Jha|h7ileZ=#v;&0w?cug*48PqIdp&0EwkXQ=gJp5KeYjy zg9JW??v8|1f%OE24dN2b#@10e^{K#^z9NZf=J^lO%46;6qx$3LghUZXT|Ur6lzX7s zlSa~5-;ffrw1nGXe5uGX)++*ghp}vVf^L=Oo1?y-D9U2Z`c4C8K0dx$jeTH>PSfp~ zIv_y+zr98uc3$+HEY=nPIJ%&#%Z-%${Cwavks}7Nhj%2!ZJR1R{D70o8-8=J)E4S0 zn}2xoWse7Oa55kE?X=sq4LsROWs(+;Td0>$O9+Y(lN>j%d7Ep%J2BT5Cfs zEl8jK^WLrO@p$KWmw_4PR~{wGki{Wlm1>e=B~gPtGz>O(g1Ah3vq@sfxv5pYtGJ{j zJHJR5dA+n7Ryv#e>lv+ZFzc00wPgoPVXmHqZ6E08$T>M|blzs3BE_C|PnTOl64L9s zrm1t4cb<-BwTERdLF?vf*g~r1Z!8ke!6h!iPAt0{E-g9y+(O> zGf&|i?R0Ixty634Gg^>b$`GVaj{(jJy`~+8jf9*#$5IH@s<^p?f7gB+zswl<0cVaSqL&)bvM)l;+eiEo-KC3Y%bSdA zqtAMAGwJEld#_@~N+&WbbcSKs?83z=TWr=H8}cd{(N@}3<*S(;`?Pw@1%BnqLshz` zSywmh-!(JUK^i#DW@ls;ibJYV{60e9)9mWP2Cx?xtZ*l}yp6a(Ga;gSPLbCqe#3fx ziE?AP=`rY(d6%vJls2ssFFtSYoIdNP;i}SBcxqevrw{{_>H_q4WoP9&Zim&EIua!C?inw#Cq>*iKJ20gIL~N-E^1`V%BZ<*>)s{V2Ofby| z@^S0})?e`ERSO<|&%+J%0(W#&rUH>cxJ%JMIk*1d^(S?as&Mh+wtXT*?xK!9OlS>*J`cjv1OtlEj+DpU3`LrFs@}{i(eq_= zhy`1K{6SZ~5fbPL6OYTYcl-=_$73Fag*3hLPaF1rG}DwpX3nOL&+&h?JstU+(h_&{GMI_L*$<)2;a?O-FGGmk2i+2 zo4syhl(kG<4*@BfI0o&i>S_+4$y6?_UDZ}&C?BhaPL-)1TfpBc8LzXc_t8OjC}?ln zm1^s;MQtptQokpcMxZ9V#MFW&cltcJGXS4aE+G7nw)yEQYV>#^C6G>?cKP?~DMb4qL*z^Idtftm- z0M~0E4!Ow>z%kXwk0&h9OWe@MQ)a5ETedTT-p0Q;xerw)7L%|LFZ`d*peWbpvP5n_mgE-uf@k(36$-@lD> z>4=XGzROPrHusY*4kr{F4PEQZRk46^`mA~T2R^oJAL}|2@Phr7H#;jH=u0B z$KzIEp5FH2pL`Bk>sXx%bJLg*2&8}zZq>Fe2{yP5l6|rJUtQ~5+<0*EjqG^tvd3Ps+flI`N2uP1{Y}}Y;XWSV=OIX8D5&VS&hw2?& zF=<+7(1>vs1Fo{F8~k;In3@{BT`7$9#$7=}n+0!@KJC4LWOC=#wMqDqxN=}l)R}Uv zf4^xFTSR60PvPS)O>d8gwA`AMj>}ZV;|*3gV8qIZV)&uKeh`Qo4+Ngt&7&#;cE}dK zVVj(-^o+IWG|-@9C^RM89w@2WP;){n4-Ftzr!6D}rKN}=PI(cr``3YF6N%gxmvY6+ z&sC&TIMmP)+d5%;ztpvfinczYS6tmsGuWT2ZNA;JzJ+&Jay+byt5Z@CMby^*zSmN# zUm}O~YdqFZ^l^7E?>qT-7+(>PnK?MDEi4)wca(rpXNU|HFjtDU{{CIy#j5wXJOY9k zTd_%*1~D=5EkIRZvV1z2fbx~xMKa@}*?wj}2bRR`UG_V3i^ONW2^Fn?BY)Vr@GbMN zWtaG2Ep~f>IWdy(KVAz-qxcEpq z&ErcpK;OMkXOO>(yFoQ@jG)fskBDF-zVkRam*0@xt;NQw?VrPEct!l)gFwRZWFk+W zWr4$Q>5N!Uf1cYdw}7k0)*N2TjoIe*X6P!*?YHK@&f|a&h3?GkJlp6GwotK{W@tup zWX_mP9-#SW=uTW?1-&%}10(e4wQkko&k=jk$14ZPtC!==_Cm+lK%T>jb8H_=q+cuk z#}$kb2y8Ptg&I<7mP&>5gZvycCD zOx_u`01(#{auqnN<}S9fQxH&yZZ=Z9CnhJ&*%>)Fnv2uHDOz^J zgwdXZZoh#6tsmN%;UmU1cHp@$be?B!p7SN_0eb2vH-eW>4sIb2wh*Z&M7n+Zqp#)5 z?98iv<78Rw+scRn{GFJ~K$auNDt(telat0lT!i#Cs<{uI^UnfMpE#W9nxf4Q4k~?V zl+wH|n~K}^Cf75+WB0&g)@;yTbp4Sr+;JS9#(NZ8NdoeN=W*eT6F&<1df&>jU2R+r z9?V8YM@_V}+#^olUh4?6o_4tyPGA9s*4Q4Y>!nXS87PcI4)2Lf5G|KA^vbJGjJX%h zm5oJ0Hp3kBH&ubXvL;x0VwZRC&6<^@^O&PZHBnCb8%akko4_j@+kiKL$@u$x#x>^z zc>=Xex_vD9v*XLEEt~NCAx)i>JwEPjRXr}APeV!AzqrC>Q{(YxQy*-BqT%;?z-2MS z+;!-6wZaY|G8U_Y}N9lS+Mbo8~ zmbkL@&Wih)hj}6N8TThvAy1tR)4fT`Q-%?F#dEhXgq3gs1xqWGedfw|L+`yDeb1g; z`vmV(Cjbb^cyO|Psms#3phZ{p@;fv5*gy20jHk{dl_lob>BuNsY1Sg+gDu2BSDI=z z3Rw+;K(w7>G2=^jq5X2r@=V>XTk|If zluTV%F9^=yO^mZ|sqqQ1xZ^Qnsj74eOt_NIRwJ&n6;Fa@bG;j1+vB1**x7xp2?A|P zp47`p7N-38I{9=Op7Esl+I3TW+K}=nBVkkJc1oi1N-CS_-04kdagTbO^FCXIp!IeG zjgyEAQrypPR}9t3Bkf1^wCBf29@+@=Zo9)FQIq2u>^QB0WsX*aK~l%CD8BiYdR^vC+QYhFg6#b!WLE!W zI^1@fwb3p#w7A7@hluq@(9NPh{OJ+g6Yth?EC z!PW+qy4_imfIH-;YFIJ|BK}>Q(dJ|SD{s>Lu_oL=f+tEL3jm_JpsBbr*!y$0mXXE> z;Yxu%K8N0{ab4Y42*E9*h>_1K#!w=IX=M(}Ph8GQe&v zG?4Djw(Ds=W9=;)cX}WJweGtz+VQEZG(-4G_dys|R( zN;9I$yI}{L&tQhuql3~Lurd1cx^*b3@W5P?>+yPLD872I>yjUkTB)n5hT^ep&ssN+ zYdWfye*ktP{r&w2uL(YZ8{N;VN=s{j^UH_$&HGCwem2T!AP0OVXV2GftwIYnyc~&s zi(OPPI9z<9WpAg3Erk2j&-68)_ZWC!{N(<9z@qfK0| zev8VVH(sDTkN9d7IB(4_8X2NhyPNzZ`rzk(2y!o2{WXyv5fRb*a5-gar6cfJLZ3+s zC2#w0cQ{ z9|&ZUcD-fKy6uRo68P-VkGngqML&j1kh;6LJmMQFpV;2bxFn{5j2WyklXGvQY6;^b zD$`GCwc(*gR$!>o-(&(=W7Z?mx<~#-XYdDG+}CQQ%bZB-R6_o3<^AvF*m>{p{Vkwn zOvob)-rwIZZic&6$5|JcSCUsED>)T8-HK8%Fx-vz#t&TvPnx43$Hp3&o4a3~m|_J3nwQc0+}~sY@H85;`8arD5{=*E)NXK{ z5VHtTAbzXA=DcWLL=|olhWO`_2jHFLjvT-?4tq0fMB&arg*NufoPJjrA&-;AGJvoG zSVIE04l*(_#zJ$7T2zBq)Y%z%qLM&2Rr6*M>7b->@tHr+j9Zwc#1<+}V3iqQzT4@P z$A8MoCi7s6`)@^BM48gy-qTE9Ufg5ue>Q%~gbEB|)&;!(mAUcj@gs-CfFl6p zlgc`d_`Q+HbO5`@?&A&@78UV3Z2lU_6ps;GE7Gi|*9N3dzCK4uW;4eM?ocb$69VR5 z1JZe48pjo{m*o)eDiYDKkGVyz6B<6l|EyjZ*8uBj>8Of11gC885AC z;R$hy)Rgx1rKpIvd$!8flmCnNa2t-z?X)}f<;inEC;bEX`D+3kR+C@7F*Jbm1(#ks zL^6>bHRAo-DS$d&z37$ieU}y4&`ROor;eyzrU6=ZF)0U7eS6}cW+-d-ev=%boi)o< zTt~&IDsHdunH@WOrdOOF*isS3F{$+T)cb{hj z9PX9E9sD-%6Lm~hR+gETv$OLgZ8HG|2C({pZA!(Ymb>H-T)9{Qb$S|QTma%q;(dHb zQBOtO(O@M6W*v4szurMS3*=ik-v`>BM=!LQM&pGt9Ofz<0xHg4)pCcuI#bl5uX|sF z?lU`2lTVKx>`gk@UgP_c0F*X)gwEd`gRdyg)wh!VR1yj7#PHmFEf=NXJ?An%bvR5W<>N&giL@T?;lc64@@78jpw_7*^W z`P2s>@tA5&@~S{O^!65;1?cDo1_mVW;8jk8U}gH_v!Va;P7MWq9fC%p?K*i{CGEZD zu@OSidaMH~tUnIy=hsbt@cHSaHVQKGc)^SS;QxRYQ=v*J zh@M`GIz|`_eiNZUjf{+Jsrsds&px#}&acj)>q?(H3bH1&{E8gamcWme8au_b396{7 zB{TJ&y;b*ipHiXEO9{!0lhl-7M$>dSX8pY2Y8EX<`xks(#(7$Xq*4)$?WJ)iZ4wt7 zr^~iFT$pyb+s4L$%y8IwZN>m@_4OhVP45L^?YaD4H~VN4e9o)2350zpr!5E-(8d7< zEIYxZk~j~6&-O0dSo~L_zyGEQjDHR!LCAKa59`8nV|Ux2qsF#0=OieBM3;>2q~sjg z`&454OZz#s2DES-TRKLg)_jd;G*NI&=SPhc;{`~zInw8jtnoZOpQXO^MnX})@51yh zwe3o_WhpvCo6mowBW;An|5a(Fy%C0(Q}Mj4d6%5lr9e;SM70VnmTawy_By7!?g3}l z1P3jzkrbWST(#GwqB07Pu%N2wC7Zv^U}9?%SjG8oVEdu&IK)?XdwpIEcwEmb2Mvum zz_YM2>;uo3o_-&QQ9uky$jn0$(Ir=_qqd3-fR^Ru$k5W8SGXG*X&eDG9*`cFlq4jP zdRJbaj6PbU{Pg?f;Hx`q7{@OyLkqwEv`n3%R?Ee#6Qsn(L8N0@IfeTP3a^z8)EU$@X=ox9I9RLZ0c-^YfA8#B z0$4*up~L1x^E<}A-QCcOKOJ2FiB-43RR^y48)T1xnpj_VHzXv4EDdlEz%#RMzC8oV z7_VQw+Kx?k_*&0B-6&V4e`(aS*d~C8zC1Y9g_jHzNP**k%>0~Se*d0`L6=)lUthm| zSPO)4r%p?R3LzLR1Xr}z5w58n@bzr!!N9fS!ubz=V! zNTAZz6p@+I%=iV_8#|{Z?#hWrj&7C1MMemcebGDcbV?I`-7gTg6E@&pBwhfh023ym zFA;Y^i|)fTbA+?a54Nx{*$Jk$b(*0O@Ab!9*o&}1nymyx3D)wDOMYpZ6KisIGM|g} zpSg{Fc&~0;KAQXz%g}&Gbr)0TH0P`7&f(^GC-8>=yv=Whuc(@zv3yFLIZe6bpvo8` zP5t3WXL@qi|D=UIsXg-i@FDS-MgNx1&m)CUl_0NTcoYp$PiA_tuqGI1M#ioN-{7N1bZ zijhrs1aLK6zP`?vIeoB&E4=iwY~s_%5%62!WS+w|mI_onlhD|Rq-BHhi=?zMRefII zl6M&&g~VAEwZPhhOd0Si0)6%rm$YT}lQ>Eu%W{e%3AITefJ+ z^Yfu!xiixWLsPHYCXqXGSuQVxiH%5eMgY3mB&{GIO43RM*2=wC*3ZD`@X#;g0tP7K*t#f6)u-c+&kx@L<2 zPu|4_K$WPKc0Iqg>a)7V@?he*jqCo2+PR;6>=#|nd+wW2z}-dXEu27s`OSFX)ty#F zZAD#OTHS8?Klr4hhBE`lE0cX~BYnMas<)u57#lS;RY#%IwGkDg*5z0SRsp6$CQx-j z+SQTwh$c z#d>?G^TH`ykT=D_8Qf94j`%!R0*1gay)stfK72rw!#>QWa~1ctVtw#cZ2rZH@ClME85tC?1lKa{l@@<1wk(h4HKu1!dU5rR{#rSgf@6 zO(JX`-7s?d)+gx_U49L9fKS)TEz<}Q;Ei}*(w+Q&%)Mn)TwAv-8Y65HTte`qaCf(a z6z&eeg1b8fR1$()aEAn|;K2$hB)CIxch|zbidWftC+FPn+;;!G_S(DkiyySAwZlQnu^dyS>BEOC2n?DJ;-)1-#_y5elqL)v>d*m*Tub!v}l$o?lU%z@WKwiH6u zMGRN(D~H`x{ayR7mHIt|%fRABhu$f<_1DLt44VD9)fw*OSIZZ7`wdWqUoAa6&U^PP zs7#|#i}2xl)V{Ly&Ib)@5meZkag;9jK|kjLTj%*kC#tjYWs~DnR%wGAu;O-KS(@#9 z-KuE;3&U_HF|I`Mv4F9BYfyPww8+>%-I|J6MzXeA!a4Y=-{8;6Vp|%tEPTB zfXT1^6$!Jy`&Z`3SJu99;6Ujles$Q$)h$o_BqHI>=w(X0{T&N=AkdCI>&NM_93Ylz z5hP?%0Bvfgd`8Mw!kiFTiu%Y#Ljn*eRR_)Vk8J6!pyl@!ZkiUPwX-*6X zZ1c@`eq48BBQ}bXs#t_eZU>Ye0E^JPOul3$U4z4 zClKq6a>Z2ER>+rQ5@XfIJ2QT2xPl)emySe!@ig`0!K($BU#Q9UBk`dxI0~O zoxulCf8-_mF4^>fgy@>u`+Xv(myQ14eMKdaasRXx$;-mM=L_xkljpXxAm3I-t0!qi z=`Dmuv;jH15RvkEWXcxO+Mhm!EpA#_OP|I5?HWVhTBg={Z!!jM1oz-d7u4-9lM4EdBHK z{o4l$R_%L|p2Tf>ANTirnRW&{#(plmAx<#ix^V}ky!%|p0ZMbsZRVRjO3j!$P784s zIwdH&KNr+_KHvIN0@q+m>9Nonmi09NjC@zw(t7mzt~aKq=M|np89(*YW|8a{u@p-5 ze&PlgNN=9uCV>T*yJ6Kz(vuIB>cN$gv;#VOhQ+P=zhl8pZpW7_?*Ga^z!gW2v7fLd41I(llIk3n%rO!87H8`UOYyZtq`N8f}c))hSFkLp|h&k+v7g zm#lu2S>kje)qhdfpx&8DRAKdV;-|Gd(0bY=Vb7`F*Z9lQg0Ndu8wpto2$5K75GS}_ zBb3BvD@+glay?P9L*SieDmjq&GjZ&Z?#_U~9I^K(cA`;Qz}_V-Ykj z$T;meMQ^f;IplFg4B^V!b}eI51B(d>d7(6} zNt?_eh>vkq4cP`e5P^zYd)-%3+v|EseN786zNxJ=)W!tvdoIFTEMWN5C2hv=-2(xj z&!BC_474mmf{oyLO$0xlYLtehQHP@ocGB!LmxV&9^4iQ^Ma3PEds10Wc(NxERjAEl zpd5vTe?9V(<_KlIA&j&i_I}<=92ZaT2AhFEVA#s(nP6u^Czk#zTdj55q<5-4Porhd zFw^I>3IxcZ8{zrc6)JP}_eQgBM!0y<8(I7GSH zL;7Q4?vDA%%@QO!F1ouKkFuw%;k8?ECY1EYK~71Tj-7@ktov2pb0OZK$82?t`GQJn z2CV&)EHQbT4G!Z?988uIp@_C~Nn8F-ksnoyof}f^u1%k3(%_`_uWVgdM zdtWDa_QG@t^%M*~pscI|@IJ&e=N_D4oLh4%ybQTriR_gW$&7>CF{QkddLI*5PG3B~ zsZO%mx{504ta}oMT+Vz)De>w${L41qQGz2NcZG7L-6iW3iyB{^_OpyS>TYuEGrUc=j5B*TOWj7a6n_ zI{QrR(-RIE;x%E6Pfk&jFoty+SDWk(o;K$N9(hZMEv|EKqymlj@SFoCOWcJh2T}EI zt8BsMwR3-{=u4j-@W!;B!ousUAM^_Tav1sNS zEHix6bXoVUvB4hKJV2pYMohB`%2$Hee~H;IjeYItG04Fz->iSxhI(?+Qs5jBcDLT+ zx^fb@4Cy)u^JQrJ_0W9&)jmJ`5r9&QfX7~*niaNAId|NbHkCfRO;@EA)$jJ6Pimt9 z1fGumthu4d)Vcj}(xo^!m?3OQdRVXeJ1>SZ5gdGcy2PW1MUc z@hP8Q6L`mT_A|;K>|b;qMTPKyO@PEd;$_9xQ&Ns5b@G7XkAJC91cx*_K_^}k$afG~ zYeEpNZmAgN<2UAWGq0Hv!dl*m?0NZA1*JQ2SGG7l3--Icw5a=}j#5s4Df$Q1)Rcz@oNJv^Zr0b_I6d}##^@bK{E|k-CUsw>}^8@kv(3?SG zq-9RjswH_D;mm!leBzjD8Lgjh*N$GXsslWz@fDQp9H`|!)j*ZM6Rgcm-Ezq9D}H{n zpIb{9Clxf~6l1;e-MK#5frC+wm^NJU<1cm((GxA2POgxrzC1ZcA4)_wNA=#W_$swgpZUc0nBw0nZJTuXWuL-fKqYWp zF<$7o|1kR4=V}1k0yRu%U(dkL(%(3iPv z;G`_<{OcfjM(Q8$po%`leaP*#X75(t$Hr+ni|`NOw{F>W0sXVuk9_#`CPBBN-0Z8)l8snz z7ChCTqo5xa7k`-~*S78i(YvMhr>Xew)uKSUkhQm~s|i8gERmNP?6Zbq`&f9KuJWXO zWaD%b1a@#1Q0)*$Tf0=F5=eMFjpK2eiG#~o zm^WT+TkVpvB|dHsGXHUdftSNn;K;EsfFIMPb&w7V6dmVX!U=Q)W9`M9V*{zDg z9bN3}RT0@hkw(n3r`|rZC5Q#(5Q~WOS_o`Tu;znbk?Xt5xX;<$a~eH;=0|7Bdnmn) zIB0(Y+VrWOzDWM9XmZu?BT!`m6D8JZ!#jxd3~5r|b|K`#ass&+7$V>wS?3bSWZdm# zw_Yj<8;8u;Z9d|3NW1(hLo>xnp#hu!Asdm-$YW3pF?7ek>?6|BVhS}|HLYKn8lBmF zs6y2{G zgLx(>=hsU=8rW>IrR|12ZywNjlQGG+$6G)vaXi&)5Xi2{LIXH%o*zbr$>WBm*m6v! zR>cT%)lz&|uRUozYUxs>T?V?MYbGP-Mv-J(P@Wx2nRY7ddYl^1hHdIZO{i3@Xy2A7wk}seu+USOrjCUGTe{~^lEz3p-73^Xs}R~7e9UW~q#UxPdPBa=7Ka>7C!w7+TdJm+@?zVx*8n9N}6Sw+zEWmfz@<#rUZ3leOdBtXpF;TEeg1p=KJR)LX z++;%+K00y5#iJgVhRkL^-jBK~8 zMM?paZqA#lOAi8-l%#l8w*B+9k2GdmyjcR@92oITFW7Uk%d%`olmy#OP3y`No?q1P zxqsi+OO#vK`E0iKb1aq3t1#!vK(TLVK#nA)x%rHQs)Pg_L2_L$#d#0_`MgP-m=jhH zCDtsC_-F|ut2rBkQ}Vm6_wA5MuW-2<7d8r(iq;#glV-Q4$2QR4xM-1$aRI!`zy4Sd#!c^C@b8j;6VxTASqB8tOlpli6OIx1X zksJwL%ns~Y*wX5nO3ui**TSlMWu8}_K91}=fmvY~A3x6i9gFL6+8C@UkbB1_JC=OS%;{UYtqSm^ zXMSvVCzsaQJ6Y%4+URtI!ghVOmE0G7;}HQ0LqM-dav$Yn#|u2p%CW*v3ijA#cT=J~ z5`^dVq8(=m=_l#0fXEASZ^@Z05?_B^+57T98ujCP5jgD!8MiF*rO9?7fVLh~=x}0M zCU`fJIU#1Ms@`M>uEz7Kn1YgN80BXv*0&1-7$oudsJIA3vhayMYouYr7JB?dF)t?E zpGyl?&vOVB=J}did=pXbp_QnSfR!Z@XQHJ*E~suNwA`Q8X0AEh@}@VoH<&PvCwskie&(g@lm_T1URR*R4|fYo&Wi>O8G%BX1ay&dYWC#=Mao`!XqkfqvRv z^&bo}1Phs!c%Bs{K6t4JWPR%TyxtLUih7tGG@W8}6J_5~%hdwKl% zLYu;%EBKZgliyP8A~g9T#q4KXnq1$S*(MD;4WDx>MQq zli9b5XW)slR0Uhy#g{dw)S@*LBAiEoKaVz!SC59td~@Y%{a&R}Y2WS_uf!gr0}A$B zSGr?L^^WsTj8uqkHRrs`9hR>b6|SW@spw~&nA zWkmPQy%*}gs`A>iM?+H?)Rdb(mUFhns{#1x^~B7C6c_ZwBX6N570H_giCT7qJq!(wT)DoRwm16NS@+UUe}$MjD(e5CsFn7 zrDya9UT;=5lML*@(*>my&RqE7JMimur&Uo=yCs&lyR&-|sD91?$h zjCTG|+D{wR67A%ngML~RXU-@alKoAkn*@N`;XFHeJ&Ja9u5$3P*E}#EhlaGXTutU! zrni!8s-W68!{OQ#wvJSni664Os_DsHvc5|{&HCDnCkZflMsglg{^NIEC`u?#TE8S+ zwuZ0+37=IG>Yt8$TXOSf16#^wo3GWg4v~J+CN1nOvPm_3)?_;-ZJ3qAAJzyR9TpD< z7@5kPx%Ij3-ir^tYi&zD-l6yF!rllhBayXXa<{eF*JSH4myb@gKrQ zVeUYIEz$jFtpy&>n=jfkDU=J@fN`hq!j=iaw-OJl&(!vDaA=4`0K$(LKt@9%sFsjqCFF2~@b*K$p{9*%UOe}C(X+sn zUGy?0q!lRVw=Q~KDrUr>0HjGjumWovy^Wu8)U8o{L6dK@?*=-#B@FQT9SilYnDRp( z{~Xp~MVS*i9N7XR)^kc1sXk(~3u{NKl_*P!17_>TSxo+CsnEB1mHRz~$7j{{j*NXx z5V@(*3y)@DuHGqOqUr4CN}FE_q+i@KW6}Tha(0Al?w!LTCyun$k|iIvePs*IVplEf zgYMYvYieriIH>AQb5*m~hvu6Z7>#z4&bFeC9hn9?#uyhmHRHgn`iAlWj_tr026x@Y z3VT~k;__nO56)O+F7%9Gx82%@l9}})Ss~+yA5-N;g-pkUD{m11IV91%&iHA#@N5e0 z4h_6#s=@J5y`D|b$99!WWT=k;8=iB}fVO@ zqu7f*FMRix*<+%~*~2S6WBG|sZeGie*WGL5D3r+A9;VS_E#+a1vMUJ{bN2?BuUTt) zCh?-e7p;v^4CG&{xX!WtseAnW_|H4sEksj-QS*y5p8HJ@=;w|Wvh1^0GtjsFr7X4Gjz zxlnPkyrtE8G`R&WzC>8~$N5zjc?`jUL8?~T{8}53ag$Z)FBe--N{hDh*t*!^`>!l6 z!%UU`b{I=GcBlxpJ%@E}jUZFMB!!26I01t* zgN32z_#|h?I}^M{DJ=YNd=8mAM-5I!@7K>x#U2 z@<)Gxx{v?sulN6WjjL!2a9eNR>BauL^X#idLxY;hBTl@ldU<)6U#K4P$ZLMlPFzre z$JcA%?(+O0El&I0?9H9x{&%Xo(Nx~M;Te%XemSSkD@AvHE;l>#@CX^l7pmPi^Wxub z^42=H3DJxkG7pXmX9mdl9TsYxO%=z3N+{@kzcTJox=>8bxEiMKs0I=Y4A6fnIG}A@ z)p>56z%rG_>hYo5v-paho|Zq;yBD{*UN9OH?L$3LzDF?{6ikuy z)5|1pItd@t8x?VVc?iuaJkPjXj@1#m!P=jh4-N^jG9SO*2Z0-%y$b-)@|*7P%A%;E z5$0*n?`FGqqh~uaB7khqx5zH#lc9!d#552X03)WFXhO`n0J4A7wTaJ79(8s^7i^(M zJZa2lD4q_w>e45HuiuQ9gTHwpGZxi4?uYpO;n^R~&s^UjRud{i9~?AdDesG&aSksQ zLvL%ZZZ6u_mrjqwOT5Djz0Phbx0@Hm=ZNXPpOyB-hbmrA69kWs6Ghvi$>n zz3xyllok_S6E@xzSiuefxF&tAnCW)yw~A@0(IfMB+|!3dA#YzR58#>4@*$k`rE$IM z`wVX7%ZJ!e7!1GO!^asvJ;x|6KW&sb@RX@ZW@G;s0tlbDT)^@1!I|2le2qz`J4uywDy_r}`dlECV=D~SHM4ve zC-VfkywjVo`qroF<`cmH1(`()(bBcs;uXXr^*V*chW9l zV3h(IlMot{6SpMcO}_7r?%0@Md^N(9G^VRdZ#ivp&|8q-eVh5YGN$S=);NL~hFXvZ zO}oh3cZDQ`)5Y(SX6pJj>H+zr=ZtTcf>?c!Iccyd`&nxF_gz}!MROzu_c2?P=UqgwfOkwpN>9mf?$Rfr?&Wi z`crWbsx&K?y^l}Sq5!n?S*tG>G4#5M*ghE7wf4%<#zf#N)HM;HFxxRR41=oK^YhwL zu04Aug!=VQZ1^P_hlA6Ta|_$0roe#4=BqckfZOjS`w2%Gv}epx^=GkBZAk8TG0-j{Rp|^6X7rqdtB!;a6|N5_+ zj75xKJJUZvS$ahG;$p+@R==fuLdAba;67CNC12QI0qJt>fHB~iZFaL2OpW4RC_jyh~ zZ?dxT1r+5unXFcR;KtT;emjjO<4icp;X5eAN`PHX*%QVM7Kd;{DNBtlEm>8k78hs6 zTA+@)Ov=N4p{)y)@=2FEH!TkmLq3h(=&`HH?hSlUMRSzVzoR}K z705NHsZ^C5p#T)x7)HwQ1^@=85loYZ`Vc|<6K)DY7<6k5LsNeI!SL$bdr9RUF#pe! z*WEwL3D0W>x!S~PzPJ9syBdOR5XVbODDySs5!b|<3ctNGYm+T>j8zWqiHfDMkmLPJ zy8MZIkHzYCNLicXd&Ut@7B7PH}h zK;#V?+K%jA61?ISViIoUp1TK+;SUvsODvw;+;~=zkLpC8(D--AC@-(AeirdVm&k(& zRkL7|Oz!>83)P>yWUmuJjfWHl?@{_3U$r7N*~Xj6q9TiZQLg7#Ef>AY(T-j;2T~hG z$R)5@hqX7ov15Y&{taX>5_foM+mq6JxvLQDfk_YpUt@=Re;4pcsNL%+gaeVnp6hr0 z;)teG#>4Ic?I@A&1vanEY&$$D7jXrAxIWwU?d=Ks!5dbQ)OhAYY_-xcc4W2dq5fTc zh$=PW9yH5Ro&+gz-V0$vQZ5m#!d{e%dL1+yI_2C>a$#@Sd?KKJZM7$n^$!q9b1ZBJ zCoAmJC`Q>^{DLGENq&$U-j#!_J~8aMgTi*11vdphgrIoyCf-P0EP75i`^lQ&M|n(m3k?%f){%43L9n*ZeNt>bjD!@7`NjL`7wk5x$1lj3um_>987@Ns?OwJZ&Sw+ zf#XODk#M_TXZN;PPdu%rc^m!EBXtj>Y@GCS$5QTRK;d|1Cf;_xr5q!J>{RfA})t{etn_#eISi(>tB@3gH0kA15+D=5dY$&5Zmz?BE&X9j}HIm1) z!iY1rgq{;S6csM?MdEgj82yq|-uWkQFiW={wELQ#yVMLxFRIdl^^TV66BZZ14Lg?1 zL;(udT&cffA$>k*Bch6Xv2lTou-t)fA;8D{cq*DXwq$pJANrEIcjF^NhMX z3&>C(5_cs@sKKGv-xR@Pg^;&&-WPt;wk7 z`P7iHK5cgj(!ZYVY)8yrsF;T_e~ZI-^hxC|>KIv@luRV{w(zTSqw;^^^`zdSMkS;- z@licJc){%G*0&U(NrE6Bd%bl>AJ~qtZykzF$G%BXxuUujcz0r)YJ| za|tn_T4nwlcNQ{eEmISR_=4yBM zL1ZJ?ns+dciD&tX;2&StwLLrH#A*+RSOUDjc?zO{9{%(gos0Jz>D>JE8A26u8P0Ko z&#|wfs(2|?b*NM$nRRvbCH5^pp`Dg#R5&wHQPZgX1ID|VQ~NfuB6>^q(Kk7Os0|Rj z7t!e2vP;J4H0;hsh@0HdVLdOE;qaWR4#gV`gq_g{2z$7#SB-5qCHq?Ub}52yX+Edx zV$2cW5wOT6aN0!5MvNo+tjmvT z`;BY#_I93}ZoHiCclwH40p0tEZxRH3?hnDFS_7#mI_+z$PC3s+d5y*n8kWo-SKkVm zSXfsUZ~CtFf(PU~f9C~bq4Kziy3Smz3}3no*Vl9biV>miN86aK;f;x_z4_+>z1=3R zdsHyBgl@)@#w28TRe33jImlhLvpLHEoa@zJK{Im}tr;@9)C9Kt>p<_TMo}8}p5F_Z zRZ!<)a_8Z542Td*hM+xx^iu^i2ZP7Yc|rRpkyPSWh)weHPe;)QZCLK;T@E|yCH{8j z3x2aW&E>|`V%}WoAGMmVGZOcsn)OO)0g}T3)9820_gIZ$Ju+{q_m;rXKxCTVT@DVi z;%rIf)M5R{(vc?{?cz2f2VGgpCP(FVoPwJAj=!9t+e*&w>cP#2oTefap(`L<{P24G zsF^q6TAoS(u72T?r!6j)Wk4NDjn*#k}SuV2$77df~uR z8fpU9Fbg*kF#l|lc)L3+?|~vLK5H;wxQnC28l_EDAsG!(#1sfiGys4E1o?>95ekl# zF!U9_nCKJr7*rvLc_e!#S^U_JBJTq?Oui%<7r?x`2lr*1C|Uk;QKcs{!kEp#MCcL} z!a#nU;T%a@QTImLD3X$gXX@rSs~3}?2`hPvZ)2wV6KdWO_20aRQTo?z*%55@&om$+iDZ`jqaoJGqymHwb~mp zYl9+5GHqNL`XXG_wHQ0L6sOp>+c%$)SzNeNL<1F&tI#G{M>=IiDK}mk{JimixS=n~ z6w=p-nCx4GX!CI57M=d5tOhiPscgtbcrdnm9r2M3pm%)73_($*zFebL>TS*LAWKW8 z)IOkzBW!@&ayx*-aHp3#72Dh%8|x4fJ&~lztKD(UP(&1v)LbGPngUD>tU;pN+GY7_ zi`Jiap(3`phSuMh$_lN0bT3O)#ph$QW07GocA}xqUgP%Scod)JB6jt~KKzBkXggE% z&QIblPIVPtf6e(FiyHP>C$7(mxo_*f9t4xEDBUN*DK@xjrgVZ|s-%5iePt`z({f4N z>v8MTb|>tg_Hq6C&L{9R#(+o?r%>)D(Gzkbz?_PBuX`s>g@h`?oWYjk^D~imb6&N1 zCjN^Zdv=n;)M^O%@|0Ms6W%^3{l5*=$ipFg78$APV5?7592`EIn#M90zbaJ zPQJFwU76!NJ(fDrePs_Uf;Y!kLDEIlKw$9(oHZ}F1WUP-@|6z`UW~rw7@w}qo_7(H zFL6+@_NDv)@gwqf>4O&2r*7OAf=@=9h~0d9{*%%OC15kz;GgD)*<9QznLQ8mm|EWe z{EmgYskwjH3*C8~2ntwXApmEpc$__Z&1jfH+f!A8g^O3jQKe_(+bX}tUbDxzhnHlK zDhm&v7Hu6_jIP;Faw{wm3rZ|`Lw#GM9|*Au+VV(f+GsL~z3gUs-Bge_=P;|fUf;`6 zQ}7JDXeQ@ET~%LfI1Q~X4A;?W`cWICU1tjKXVPnKpFKB|J}v0elTV17moD-CF=km% zBA8p^z#T1GM(h3DZh`;7JS*>;*Cq_gcR<9M{vgF_8%~U3%@7SV{HVNFhF#8>g zl|J|C*)j^dvcfPi_i2F|{*D$p{+ubDpJvle07vsTt8Im{e3`zFSxa?twr-3SQCF;( z(382u>-}`@yQCv!S>w(ZP|ofLsFg)mL91k3vG+C`D%Gi!{x>8KMLy!{JU4)&x!71q z4{^5Ot-=aWrJ4 z*u&bq<=u&3tY9BgB>9vD_LCf9B(4E=aRQe=Z+`Fa(W^ci=4oaVMN4iq`aWp{_B-F3 z*45RGp>mc)`DYci{};0|iFbb~U)9%O4^*1ZE5jq9|F!(fWc@O)?QhZnwf!8sC3%8O%0PDO^P7%uHDXaR$PP9j z_&M>RdxB4P-PNbhJ_OQwisRR*6Q=&oHs;Z2DV?e`VKOtsFDH@qqLiHTD*nk-zu%Eq z>6*~pqpE24wszjtJmf}}Q2r?SsB05!F7e=9jKdIn2YJf*t5}b=e0;yA0sL@oheOEB zo-3|zW!*V16&?nCY7w8^T&?$N=Kz`Qr1m)UytYgs?~82V3+ws;=3zSLQI3pQ)7ek@ z=+N`@q%i+m9zl)jO*aPTIA`W7#bfi3<)R&1eqmG&B$HlM?Cf~%3M<*vEDqtJ6d&&2 z-{`U#-{zXOEjsSk z)NW%VcQ3Xr-7J-q*6s?&BWJaNNuPdpCjV^|FSQxISA!j z@K1dq4&|QT5+`ug@gVJbkBO?Y?=2-#PmXH{^LtJ`g^~$8!8)HRO=h`p1rn0)m3s*J zW`&xtInJn9CwJk;IQluI!?-; ze-#e{k{eCGGwhX=zo~rfSyu-4eE~d))El5Zp-b1(KRZSC&)mUq@w&=5wM$jXO^yGD z=or{CUzub3gX+opv$UF$O-rD}vG95IMLGe{M5Axu3?=*}iFxM;RqM$4kV(9EDxV2*$>lbk3kQjo3#PTW5T#BXeRPEXuS|y&^%2$l zT!%xrN8>+8wteYSQQl@PJzMY4rVvViqe%~Ak@y5PLH)bS@yH2vLKk~C%iVrh#Lg!= zm{kp;VUmKTUh(gPX}5aherOKoSCYF8h028fXAg-Py&a=>nc5ceN5u1R_79KQHLdVx z4t+hZK)3Pcl!L;+A$;~MQ`N$ z^fwFj(|DAzRQKhurTEk^NbE&egparR8L8N&o%Ft7(+NgqC^oV5u4_wgqFNry|4Nt$ z+|^KoF3T$Q{P25<4g#M9%Mc&7K~bXa56V`^9jTMTP;LO7uJuBatxxmxM6CiPS$_#u zGrvcvI(-UDY)5Az*RKs-GLb8+KlNXYb2S!7aVHnnUgFQ`Y)U&}%Be=epq%5dV==>Cpo&xu&;I z&bxUq6&M8FH>21*{|;-EF~00zQb`$050z3fUAkIXx@c25zP3x<*rANrr%s`nxT&!o zNM^EGhZ269*(l$%3uhE6jUQtQeT7@C0Mn+Dkxh{Xc6$M_|B_&U=0^>pWP3aF7GeX+ z3J!|D?DrjByBN6VRr+Tcz)%h)?`rq9&&XA`d~4RV!|FGMQF_tWo)@E7qRP68SKEZd z$G5F68mg1$*IoPaMckOTGz&wUnEd_3>P^F-)g)dv36jUC|n zk9Sa-=V^fvPr)i!Iohi}YguPNs7fsonr@6@b zs!o@Y`uL(oY&C}$2+W4Swv$jXz$tVIEv<)TmDj!P_g!%g{SQ^O@Re++udczWjPIbh z-2VZM=8W~Tis=61_xn=Sg>*b==fPR(JW5%vy?mfkPq|sqxQ|x$wS2T6&)`h3aWZ6$ zvC|`VIQeHpP7UVc3<_4IflBlNIh1PbLJGvauIN(E;Qw8A{6a!`^?td}=4<;ZW>CR9 ziGpd&nr{^)YCXL&0t*dipNmc~4C^7Kps4o0AoUrZylxXNgwF!Q+jKF@10M&Jc)sYC zz8(h`X33?-a{-LM%of;q4fprRH0)6fn$Ufs_p5!HsWK2<9F1$RH(w8Hxp_6JRFu++ zL{hMJ@o23!$Br2P5cc- zD|DzQ4!-5M%!bMS7eZG>b!;UFl%;`NPzEv7aD`+D7o{LfO&ou%JhfVVh z9Jn{rGnE^=DXfZ&vrQZsI zq$4z>yLhYD^xwr6Pla+Sh}p-n5i3ZHvk5d5&3e4m{e|u8TptT7ddl-y{2#>cIhFdY zp1)o%)#E&ilL*Q_Xz6nBz++V6MkNJdMkf@yP&?W(+k{g{rxVngvC#ZpFPh5ZBmUJ0 zo0tQEbB#iZC?`K|>7vl|m5Q00L^S=(cV@0_=yFoBN~Wi|6C0DnX4k6zWa<~j>C#862+OQRgkOF>f#r%qt9=<=wX4q`LqdQTJ@@?;iz{8K z&5Is7W+>u6@T}1ynYKt=_~PvCpX5*yr}k_o7(EyWs9&OFDlFSbcR+#vrQp6%BA_yB z+-cya(==xj;#`Jt_uODT?UHc2grbr8A_Y;XdUU7PCxy8mzhm(_3DMTfEvd#3TV9AR zAEq88!Q+6+_es~@rgs^#WV>>sGr4u#C`md=hLJqh(}goHdeKua^)zZu-Rb^A?<9U1 z8q-?eg!B+I8^oIrNOgZe_V>vn+XUnC^bm${V>XaJaR9KrU#+NfQ$PON=}Jg!r10eQ zdJZ+3ASNYy&7E7+Fw~JwE+LDT^vjx61RCIEm?u%14u-)~v)R&Lc)rFMrM5 zdqMuAnd#v285Jy8Dx}r022$G;>zYXr(tVdnT_%%uRO7Q6hML~U8n#ZwNjcA`B|TL7 zpjGrILpg}x&hX_`|~}$%(3o{_mk{0aH^8=hcCE73;O;d z2eh3_)bnFaZlr(xwF$EAyXb1n-6;K>8nVGOI^+^6(+Dj&=5I7OqiE7EIXaSS6VYOl zh%_U?=TtI`T5A5nc3D(=F)fo#_OEpN2v&MHJo4!;H!I`cvA~sBFmiXJpgNA`m`lH! zqc>TwbTinny2RN#z%x9`)PuF>A_ykWXTN+1nyYljl2txXmut?U_jnzq_K>P*%$1KiE|?`9#;N7CEZLK!#nz5SLmF|pEIpb-8C!BTRqAQP$0@|gMEv=nts$n9d&U_G0LNe%fTTlxj16cf2l zV|RCbNqGMFt=!RPzI2+o(^u>dZ-A?w3IRsT@^ykYUDsLSUe zWVHQ~*ezH5R;}d(MRK8`B(^r&!)cvi8J$%b2QDwClT%w?-gw6h{erXdKi-=ZBh)W{ z*PQ{GO+WHx`!!2eZ_*w!PT0q!;9uYyLF6a-d{A{AS1}W(e<>awJ)01+Wm2|YTTy`c z68jRxy5Dq_o_L%u_SAix0+8UhPTvPn7uxA5SSkLvhvV zAIl1B-eghuD4P;`0eL*>3KBV*3Vg#7+zwe;I@cIw6eJPAy)+Z{W?LSoHo!&qf zgYDR){Y|YS__bDvR+oJtx5EfY+snlmXead(TM0$SrFaDrk;-lr-|lT)=K2LzzGCx{ zbQV>D#EQQG{dIJ5S?y*(L^PmdlMg~vhP2cllOInmS{T> zmv~G=NZZs)!PG0_lR8D>U^-M*%6|lZSb1bXOj+C-S>RaM6Muf(uvszt<4f?#@m zX$-=-3DsFJnNo5C#F+SE!}`*M`Mvl3U&fNyzf%e9z~q3ykCkmgUyMpjLu>1Hj3Iqg zbO6*L@xnl+!uG%EyWMNca04Y(zp4QJ<@L|%2J=Cd6zWz>==ITt5eqoa8kXFYZ(-8? z)wa~Yp5~|0K%ncXRQaTbkPklVFDZNS+Q!OSD5CECcV3KR2G7y&4fCa-g!3J4)bV%* zSfTMu-8{X^&la;LJ->_N6J6cdm!Sh-$2fs{*}UVLc^;VCbw1YZu9wOCR~e5+g7!F1Ba83kx9FxA ze$VCi+%9cqQ;XpC7&pg)Ynw#UAj1P^X%pDaf#9B8MP)MWozJPmyX6R1hI5y&%=(wE z?Y~6p$6_D|K#$NguOO-HxN&9#RGsT}>W0kDNo2$k{T++D;#a6nEVu?oHUnJ{{~2S7 zT-XR|dwjTn%sRtClo+z+xY5f4Th%=3a}Wl8)~dZRv2JH+trk9`IW`Wm=572pGsupt z?*x_IR`@>k090sw{r2Z8dNr*@`Hg$&L=)TZDG9BH$k+to;}x;?mV2J7u60iO8VXxg zV%c1|#g4bfjvmYvIoyO=t-5k|YQ^+GWN+m%2M=W|MPwokLy188nA`o-q3b4GBatcp zJ62-DXsCk-wc)To1CfD(YbMf#882Fy?=<=oiKh1r0R8(EtH{J?LONo+7NOy@6qI60(Lw9#~3?m^R z9V6W!jYA1Y!_W+^w6t_H-@*IF=lz~%t@n>_t@m5+{_Cunedg@B&b9Zx_7%ThxAxS~ z>91-l>3_>-HkzcTkFW9%$@-dhc{*p>Tv zPXz5vBVLB2G2H2r5;j}9&g0Ivv4WV4ecal>; zg!bN@#iQ5aJ@v7pTROba7fxF5)&Asb)vfeoqHyGlrCL!#og!18_l(v$FnwW+T!?|Y zOA2}Bs%-^7ex523+t;y7L#q6D3<7cW*Id6(R9oPn6^(Dv*fAq@+9greqHV z1%!&#bq?ETXoPamaBi%Oms&Lk(jn(Fjs~uBm<#Kk_6@jayydaUw`e`lY7V?h?r$$f z%y}0`wgB!$@s6j}8SZHRjRA;)@-+LFa?d~F59J=`Z^}LBT#@0eUfkT+O@GVN_ut&~ z|Im^1##=ENg3fjk#e-ZnUN%v1^Qbe6RWbzJpBHsU?%xW@Z~pX;=jYP{IKV~o(<0TG zI$0yW1Q1fduRZ9d0^#%$@QVXRtGIVvcJHGGGN#GYVwm7UH|{gDna*rVv1`g-89yhr zw3VxxSLwREGrMc)Qc@Kjh|bRssNLr;N#(Qk9w(ieM!I%QV5_Qb7F)U=)|bca->>QD#$95^S2jJ24I5V+wpjH%8wug#`0A6cVXpw0}S{1 z)nhfwG0`^uHTz>qotDxeW*U+wj>ss!{%82$|2#`ZKl=1f2A(bv2^AIoytQqEzPUGW z48JKSZis?=*Qzk2+Ux(@>0Gj`+=}pbDsMeo2>{)Vf)dwyvovbU)h2*`?t6=hwq{oG z$Ja20&L2FCdGXVcZD~BlX1`AwLxYMcITo?v!IpdasPwx>8iS8Yml&tENw^f(kNPC* zcIMD8TMoKd_;_40rLo_;U*3p%Hsns`A6(bhzyE5V!6U-uBb;*?Ct>Ga=OawjHY*%E z4eD!G$(AvJqmjP?`ZDIHfr31?LNinbzqZi-n%M$mvy_eZ(&-)DL^MwEZ_q96Hw}P5 zo*TBuN|2_QX@bVUoGs$M);{4u{3yL_W>QD0+t~VKFd{6DOug{G+D)6(MHXbZz|Z_R z2-Qx!@o9b0(v51`RL^1350@OUn&VAvckA(eDgreV`B9(nrm`&e{J|b)kDC?DE_Id08B7c z(92a#O>J4?pHL965&qlsz3KZuHDzyp`#%-|t;y57x3akD@b@ZmbM^mq7{4Fg`wzg0 z&Gog7wwJ0)y27uBW!{V(M`EN>$n!myzrzh^tk)eMHvKyqayqKt!5VWy!gMa6M;oq5 z+&w38%xeFn{nzI-Na1e{sBvmz5x5b+k6l|VDKYTFBVgU;TG{FxWl?mxm+wu5yk-;T z)h!#YD=pTFUK_uo`hySd<}s732`Qwd`Rla470N(&E`#1(#+>QX+G&M z;TCf3au)TB>dwp0ln^bg1-962PP|@`i6?;>+ST4;)MGE|>9WTaS=l!zYeNg04`&!H0(PTkBAVHbo(v#@xPanFU_fREpE7XmU-45e2N89QE(5Pn=%lm z1=EKr4%?Vbmv9U@nwsmM<`*rj1#^W4;g@zACF-&^!r$9^!S@u(OJ_2tv!I#fGr2}I zm47f|=(5Z^AM-)(QH^hihs#nM`}NqmHyc~OKuZ^txN-*3SZB?qr4`mu=GegchJVBH zxU-}D;{T0L@*ZE8ZhJcHWgjbF4Rn8Vsj8l7hr%lCDzft4Mxqc8E}<<7`}u^Vp1=l(he4A+Me*;r8`8{xgibYbl01| zeurdQ4B?Y2Kl|}mJ1|flt4Wl$nm5hp-4I?qPE;0=J0UZB>5y8Xr=&~YUxS#p z+LoJdwAz&;5OZKaAF*JDDK>D`>E!0lB8*qDs^n>zrgVMfWzhD~W#mB54xPDn&!#AU zt(@gTzS}Tsb}zr&(_h#$Ei6+60U+BFyOCm$SFJT`%R z;nQQhb$Gl@slJ^%OYhQ0F^cs(74MqL{WLX+>xxt*>ih~YIHC#Cj@qD51VGW>FN1h# zxsDCIocp#QU9T6!hAqcAwbh-Kn^HgP@z;5~wXpI#UvP8V7LwA6X4 zDmQ-A^jxKO?=8qRad8W&CA6q%$iTSD8D`h=R@wNXtJ|`)#&v@XypjGDhPz+CM8^fK zSJhZ@KGd$}W_ULHwzkH9uQw`SN0CA{?rbF&ZlakO@x#q8L(v`L9Qh>l^_2YWdV!J0 zP-SD)Pf!zImY^WNUCck}`L+v3Y7Um>llAG7TIpycuAGliy7}UV)dD6ih~`zx^E4)z z%fN>Av{Y3J>6pC(We-tjWd^4HDv}SYRb*~I9u{*_8b(E@2aMSwW6asvPYuwe`owmQ zUO6$TX!Q=9rV!V-1bwSa_pG_pUvKryjRJGnDS{NWkfeNW=n|~;KLXj&5CQrM4f?d{D@mw z#3<%ZLiIG(T1=YruX+ar)+9sj8%Oq?Qaw+8yN4>4Av$-3>Z!0j@A{J6%#INeDXANO zkpM|}HQV1cb@?l@qTCVe49PldTxukLZzC><*1=c#Dc7%t9L+0K+KjF*#qg{(&u(`E z#%OcM)cz*hs}22qS~8WLb`LIht?CX!%;z1AG2RiQswe4pfx(Xyi`KJ>AH|JT)K_fh z1{mG1_!Zu2Pfbv7VecmV>Li#``q-p8ofOBILO=DngZ)MMNI{IxXXP*YGKwT&5okx@ zvxhA|F?b<@;b1sGc{l&LhTcU0&%*eN$EqP91se~L;F0{{kf5t-!bzqQESEn1ZK%$& z<*h87WoXrp@upI6e|%2b(a}782i3utnt7Ib_`KE$a#~0gFaqMk8>r8jtav+nBLCd%A zN^z)BC;IJx41Z`ZF+a?dkPHLvNi7(Ti zLJ~ScZe>9)^$nB(&C{NHoMwkHX&vqH2yZx9rX+AXgn6V#Sbk=|jC(z@ZE`Q?!uNaU z-TmZs!@eL0Df6&z(O8I+hNz9%AbXim?vP|ISyrD-qylDk@|c;~>l96LLpa$h033*4 z^|_yC_PXSl&QDjf4{Mj$+J~;Dm|RcNJ_R@4W9^IN9-rYQH)r;g`eyH4rjH@k+5y4b z3-A>s3Atoknx3jX)eH~~omiD0e#5#x(>u>-))K4E87U^7z8F`Uo9~3?%Xi2BPW=-i zl&^24G?mx!s8<@2vtDR==$3nkH0baOKC|V05AKen)uAxM5#=#6795tsTivyp1qc5O z=Pjyvs-6M;6B7vMA#ycB@5r=4{&ZD2L&=jQnV5EmzZT6==jN5k6-fvPUhVJM`T0$< zY`x(*AEyDjSMav6V@Q?kcXG`(zc}+2yX_iX`QmXPTSxv95AQAEbJaBNUF!C!UPo8s zpZW%xJC>MJoRLkI)^$Ve?fQC{?L$+unH-P91nhsp{UF{w! znd*DXPy7|T>r3r%1goCCswoP%+U|^=A)G(o>)f)`o8E7gf%9Wlx;Azz`y|JaL6a^! zFIEPkw2ZR^J{a(q^un=O9Z%lNCno7KfQ*bxnOA+{Z7+FbT zuq=_cYm7A<`*T0KpG$zpk|>Oh9E&yi3UQ&U%5+x65=ew*by=WpRp*F#`MIOx{)T4| zt+RNZR_s?dQY{f;zuGzzYHCWA~UT235JKC?1u9aX6*XT0kAcL2vb<*wf1;UW`M$9+E*iLbZ*Jy=#%tVTYEX0OVhGr08bnvep{C6Na@GQaVKPn~5WyQ@#2Gs*iTs`Zw{1n4@^z;1DI zR`-BT18taXAeT{wqK)92TUpGCljY8S{h>C+A7t*GO(jXlr`^Y3zKso?D*A=j!h3$0 z*JNa-Au@QjJ{4gUR!iqLU&)dCJw@K*aB0!VPn|T0j8bSVsx{1f*$I{U-B0DrcM@LC zy>lHF0gan0HM)f6=2q!!^0Xs|md@idYU#<#F1L zU7Q2ImhC-K>|oeqesOv}An1B@k52P`R!Z;{$P62%%{|Q)=~vS*?#*a8%ukv6VO&_u4eh z$Fj-C55w9CIIC#KnnJ?acv9GK=oB*C<V)+j+~{y|L$~*BvEU`$^|X63*{s0RL zMEtlpihF;~j@WD2`e8Jk?;zvir(0PVGuxCa3)>W|NI40R$5+qZt0gd+f8woZ-pY`> z?-25iP(n6+sPxnNUp$`RQ3)hd#+*@C=RMpLA2eXOj7WW%v$&9BK2bV0#-aW} z7SHiGaCgBZ`FCr*#Zw&)J^E`oJuBjdDY>+l85&imkWrgAme}dQMq#ahL-$e$iQ5>X zjq%I89iUJ34~tav*uu1#jcUVA5&~dVGX~Dxh$8sNS!M#Q8$lhuVtm@m3Jzr*8_N3#|jxSduQ<<2CUWC2sGhsWP+?Z#O@KG}6gjC3^QqQJp?Q_9tmQD~p-Rgc8XO=2zZX{eTahYvU zW~uk!`eVJPuGT!?>`xPc`yuhFE7S3B@1Hbdw~-`Ax@d0u5 zpv;!+>a>lYs}Vj&BteCsh>gzCCRQr-TfJZ$c9zgyxF`N&QDc7jXZ^!9+a&nU%~66U z;b10BLFL*Ozpv)Y4VarW9BK>6>37$B<#7NzM-4O^9?D};}_^Iu9u6Xvp1kz&deIQbewZN%`N>1u%O*0e9 z0r@}oWW-!dB-oNt5i_*vIxdbucPLnX?_tJRz&Y`7vMsZM1bCBz?{tbEi8-D*Oi6`d zj1ssd+m?_p@f*N~`jyiX#?_TRj6sI}vLZfmyMpMVr9{Q7I>slLm&yKgVIbp4Ta)m0R zO=L+Uz-qtF8>E*ICvZwO7oXM2-WJKGnKgG9V*fT))m%~gG^K69$(g0F*NLl$Ib$s4 zz!w>(r74t_YBJ?#IgTGxA3MfPYBA1_?yv=s>sf7JHKR@1p$ZX z>gktiq-(Ds6=||ZSI2W1zGiQSrThG};qkY6!8!k^FrD0F%3bZp2*Qn-r)5ONPsC`} zCXvj0D-JbJ@_aY9gU52%Ff{v0fqO)WYho6gKVrXfyQdWKgn49mbRG2;EpBoN926-tMy{V_X5i1b_g)ZX5@BpKeQ_)T*@J9> z2-jq$ZOQnV%%wm$c&zf|yUnAPD;R*Gv(F{qzR@e!Q4)E~CW(e}N_@88$JW%;G&eU# z>9xi2M*PO-?yI}R9|}oZcB>IZOQC@bNQ!;jB=NLz96e^ztXgu^6Z?pXf}1gH&P@_| z^L&OOF>zv@JDf1!Ruq)zN`P-vaPJ#_8%M{jEC>{Y&Xy-DjL@F|FxfZFeG;IhEUl@D z2Persf0m6|cIWSJ{3WJ<)T*7?FQfDGzMB&)e~$;aLB~HaF|oY7eBDk!;%109A7KEl zh2PDd;lbYkTqs|2pAP-52|+Yqy2lIW>D-~fZI<#rK0>o8ABjI&E6iJ5l@u!WIgtK=)!-l z4x}csfo$#UPL7VS(a}AIu)PU$eO#JPt?LHFq*{eSTA6>DD5B^@^*H0fj6m4qE&oeuW{3+Dvy|UnSI_qOTxzpTaFxfzEV#Q0g?(pubD{Y-s zrQts5VYYVST?e(GLpT2%rb7tSQt;qe=P&lGf z@FY7O7l*e!IpuzD8k^>UWA0oVuKs6$%eNgHadWCO<|Y|f=}Syx(O#{e1pajt8GqKW zxwUS2F{9>zw8Cm)dc&mXn3Jc1n!L%^GV^j!errqZlfC<{^X*-oAvVPiE^?=b>W)0*z<*BFFh}5+djpM(>*4wTfM;DI`5bP z7O`knV_;%aaO&#n-nny!*Xc_F@J6|eIwQ);SV{ZJm`I`|fAh_>5D8U+fJs z+f=k%xVad+zYBi_{WA1zcPVaSPpTT9SSd%xe-L8Bm)eiYq#Q*lG*1~&5EVZ( z{g?vJMZH<|Np)3WZf?_osB6;6lBgcuZoG9eF)X)aWAo&Z7v7P|^HMuc13MWnGc&I~ zXp<}5u6nW+ztX`{>|l$H<+=cKiB26i(zADXS4->qdZlrxhqm-BNmFB$%&jasylsbj zdp(skrkpl}RpW}S*hf7-$(Q3k?QIr^kS2ro7aKsAF_hgsJmnO=Ajc zH4#uQm%_dE($BoTKb(L=wuetnqBpYZ7&E4hZARzK*?^+MIFN1PmW73d<$4LS>ZF;U zG|D2(d&6!9d5XuiR1Ak7!{K*1i1pw_U*tq{gqyCSFD9RWYO1+ws<$+kJ+y^ODDU%+ zlS>Gxp4#s04)J)Uum}m4n3^>hEw`cp%oLpWfK3%Qd8W=Tb*DlgOIDEQPhJik)O+M` zGSi?j>wSxlk(xx0Wx$0Usv_I&xm=!gOnT|+n#0yrG;xLMV` zTCwt%u%_T-{5>o@#lbA~x@5QVX4CK5qqWvi>`jLIYRlV0W{Dch=|_&MZhz_ojzB8R z(h6w?(vwwdxj7b0EyMVQLIV~Wdz4qZULj(aY_-`(uSUuHlnCSw{_5PP%JMiO#~CS= zck2QNVFN2Z`i=cSA!XFmw)lPKLU%14PLLY(idQhzB&D)n`x4&{6cQ*2(pJPHC+MW1 z%90v>)uM5@)a))Yba`}lG?qnow~#^m`s0N^e{xr<%7h}WQ_jU3_MnVZMGt8)gjI3! z`!}nhV$fpshYa$F@{hCa=@2hZ`2^-Qt!fJ=7v;nON!cXDCL1kXHTR){UF6~WKF|5t z>F;P_Hp0ZURmiq=58uXXs_A0gHWVSJUtDpG?gO6h#~P1|q+=LJW`E`1nNQWbog;=a zjPOFRr)Sh4rhDgEt-z<9#}2@{j`HHpjj!dc>1@3NpWVE3-ts^ypM>w}qfslp%hj%9o9My7tTh$h^_8k*V-+61c ze99Qk1~$ANl;z2}w{4^k(80!<*v*|5ngrTgP(`Jwt9Ra zuDN3RUQH4_sXf)qUomISPM(oo56V7^Nkn9Y9#e`}DB>2q5`SzB?6>l-Km8TPEOsjk zfFkz8-tlp>^Li{7EgPtLYum;rfF5u7Oi*z_6QEdV9qE{6?2ulNJzz3$&RS&KLq!l6 zp;h{=G09lU_3-g}joiCZ@T8*RdtPq;q#+-6! zF`=hL*!!F+Q&g#erT936J)Zz9yFYSV7fu`}j=HOQa%pU-tT5mZvdwEjisLt7fMMIz zI0+QNKJ^pvR5o5& z{Tz_?g9|UbrEpbD2Ce)@nt;(8-HA&SKamgmS5u$wT7`&;>b+M2y=de%zfQR#_cWB) zI%m#uiF*o|F!+~yb5ZC*vZR~jPhJ@Zs2?qVemDv<3zI6-iD9<)%_^}sX?A@J*1ujQ zVZrm-gAYD(vBp2c47?W@Kl7^dz`D+Y%x?cka8Kkq@M*v&|1$%%dtMr<)SikjAeTo4 z7&GhuJXV?iG-1F~$sd#n#ky{$Ym1rcGjRBe^G*U0XX#s6 zymC7*+pIooAqKY2z>iDkQnFOVzSWL?a~#$GT6-%2yYlhE`Y{UfAX0#z;A;(FpCK;~ z1`R7FMV@@oxt=tN4has9fE~~9B;#RoR1O^Mu&DW{05;`(vc&px)Cc7uW6Lik6p3Z!go zZUUN4_VD44%}p!MA49-2XVZm^4G%ADZhEnO(W$q?*{^#yw*ZW$UP@F%1=ga+dUH@J z;eWn-%K0ZD;Sh9ZsSlrQNp)yTSdQVHXOLI@X zooaLiNnj=`{^YTPtOePU0Eter36{hJINE~05bPy1 zod5u}@1HkB0xc>&SP17VDJu&17Xb?O1A_m!f$6_Qq8iR$T%67A9D(ABQ3Sn zF>x|-w6J%!u(Jg)5lG3va>Re+!glr^juvL-&OjO3C=XbQ`Y)-YiNQZvNt`WgOaS&< zGz9P&gn!N`+nGAM8915%y7sUCWJmf}|BqPRz|q#i)(q&v z-w6fF;Qn3S#nH$FxPA>fe9IkQnCCU$~lu>WLJv2eCF0g6thsK6iqNs%uq z?&-&?9y*wAF9K(`!9Wngdn`8UA_#66Wu-buB5cd;61XZWY%N_}ZK-pO{#nL^+4_j> z!h{wgIxFpAOI*=b|3O4cT6f5b`kYUW-(%H2VJN^NyZHZndXex4{*-YEt%JmgeSQ;U z-H)E9f(VAFM4X&hNrK<^7`8ydKNlE4Vi>-oL?@;E?@ClZa_h><%4%wAs;VaFFu(x} zNwnzj*4EaeV`HH;o<*DJKYzOa*gHBodC>(9%WKvC9#=QPDrbqNGFZg=iMo!SN6qPuQ8`TG_g`T;hH7jL}+Vq8S-Xp5=vW*@uOVQ z6_EhIrGLY<=`0x?v10I*b9s3g1b%66ebT~8P@*Fiv@er@eq#Ys*U&47>?v@=WF*f1 zpzQd_Mj<&epT6g?x$9eX?MkentgNi4h=GMQZFuFlPV`4#Rb5Pf^oI9(!7<~{J9)M2)|Lpb1wCXk@VDMQwGQi@AgG`4Vem_SSOzwp^(E-1eF>Z*t~o1vN4}Oh8EJ(%_pB{M`qkUOsMB|?DgY2&5e8+ceAbM+fKF~_!)52lxig#;%02RRtuMTkVXI<2k7 z=^~Jfth8PHZL=b-JiA=;7J~({e`bEyB6qB-b;6>L9@zmAGQP3MouN=EpwmpW|L8kJ zQ2kquAW=m~5@fB%rVYLkA%rw1Q%@7?wwX=2<+H^ynk?1r2)|h7-KkcmWhh!3%`C^482s#}I1QY$YR;2z1*izazJ~xV(u1sms&zHG9M?jE_&sU5#h9Eiq{4Ceo4x+Mnw%MSf3Ng_z zSL1XR8VT>YZSq!q5R7Pkz9z}!~oOF&*W+bvl)Ze<0puuJNp>5(?v@9RQo=?E!lG`RT6#YB2IAiHv~;~K{9 zc|QsTq7`gMl^$-Gph6y)jfk)Tf zOT7IP*3+^rB0#}o9kGE}BjwhH2$)a@nRXs8CI+3M2?Ybda(`jl8;h>XD+Gxa-IdEF zX;#e0p85NWS@o;9L|c2_n3te&YRTAf(2JZHlz&P@Z(e4^QOZMqP{YDKhiUHBnArZ{ zc;mj4p|1J<&;mKjiW>{yKWf(NI<}Kv+qqzQZ4h7iz^K%86{mZpA6KVk$#W~P&+n(T zpWV^-r#VDifr>#9n9Ak7NEB;C+4Xv8x$xBX^>Y=UfTNvNSF+AIH8ikwU_?>rbQ8~l zTXtf;vfEnp24VA}=~3G-@Da0@yHC?D&!}e!z21iC=j}pG;7(8D!nwx+z}E)%Q$O#6 z4h_viAi2PPimTj+h6MbYjWNp;eUFOjLyb($aT4`8JU6R9M z3~xVfZam&u853LJK)9|N?Vn6MN*?^d_!KbLlAJ>%b;&7zs&VenDKFJY5A$a+wDf zNlST>s}--(>G0ROMHqk3?GSAXr+rQ4N56(4Rpg#rosXZN#gfqWGe6?kY}J8<8X zdWSQ%o~XIlfa}+m9Md`4FL{|XvYBw7RdMHaJnVmSX)+X+7jZC+9c^YRMQaWKe6eMI zCDewFU0GOu(R`)c`I8BYDFRn_$(@{^-H2;*mr(;jGDJYrXoi==V?#ux$IWBBG-Q@# zX&e&?h8mSdK!pLqxQ_x1ivZ!9v@ z^_D!gf94&QyWfVv1zzb~E8Y)QryNAeVpBbPVBXIsFf3uxU2~tm#>WnX}HBq4y{ zk%p%HzB-g7lPm>+p2@Xn-KXKz$>J^F(f3Bzj<3N#6#qM{re z|Kf4fi*}5$`|8rMDl$n>ov|nXt`k!+^Vn>1sDpOU6cHD6+$8<}^sA@MGJ!a6j0Vm?OTSbhPBqtX&o~QuU;kLHeI5<#0``&vIpdc5#W^{V-4cKLG z;x2$1@unZyz`7i=%u!2JIID6t^i0iDlw zV|R;b9g^QYm*HDl+h9NR5=u4mYFh10FPj@!&~nZ*4(~BoyMtxTIy zoy{}oG`=4*(o-kAhFKu@Yx$N%=C8{>=f#~2fo`GOjLilQT3h;uHeb!)!6^qi0MI<& z$*swaf5$WbrPb308MQK{ex~eFZsxs@M{B9Jc0GmO=HE(-=fw7-xnIE_8uRrOqn;P_ zIuV331s~L8A%XbMpO?S3FXW9#1O@rIb9WJB-zTk%xFwyA-G6F3Hdm<4(rCB;3@D)G zA-vLOzGmM)#S-~qdcQXxPn>~5GQ2#g^jpk1WSod%W`xJSfG|J!GkNv+D=0FlH$7NO z`=jNbtLqy;5O;TFJ<++{eCWp~@m11z-Iz8lbN7qY{S%!QuHBb{-2T9ht@Jk*JrdPO z`2KZa7sVJE?U)-|2VhIog-ULIrg_PN!@ZV`V}F;XdiB*b686AA>EL;+ITvl54F>3F zZCX-AI3wq)*5HxWMZw`N@d>cuRSYU`x1@5+yRVhi)v(bfDW$~hvYAM;C;xCzIzeT2 znfZM+q;)ita(mX9*v8m;^zVnufgiWJM-ILmbn*=GmeHoQ9y&%u^BQ|xF1sJBKwh^- ze(xJPT^H;H@`Kxb&hPpK)C)&iB2B7itcDxwG>OkI82Wo%)?Jr$wmyN&B@eQ@r3w5s zCZT%1J3b<62);77+}xk*@E+?+dVQ*qUbaZ&T(!k*Sy*GK+dXfEOhx3 zZDy_FCkBW|8@HSy?-Mx`t#(TO!U12q{y0Q>=#Y`Ad9icl%?0ExhNZspWZ~|$1Ru(? zy(T6+Ju{ra)lK?Bed7vXv6uqEj_6h2q?pEgNK+oyQ}(D2hA3Zq%<}!93W1O-Tlkfg zfc>%F`jHXW@nL$2j= zDR4(F5`c+xw|m8m1?O#6YBy-SC1|P3Ll%9OOJ=Cd!@E!SxmT?%Xdh52Aet%rSKn9= zr;ZR`b7cyoqOeD3VkjA5U%=g>ax z(Bn}7R4}y8 zz#!nDU$D1Z!p^v!Wl|-3xgIO+lA&f?at&*%+jC8&;B`AK)QjRI8+t6;r+_#7C}<+u zB7(7PHUvJB%lpG?gSkU&`FyvLcQ3R)*Idp%?giSrkAhHgyVV5| zyOA$fD*KtlSrYvm5wcjKKDc+wEWrqQcB;oYUlLu}Im&$&daax58P#{Ur1oD+Fx_+K zqYsO@EIe~qhEMZJi}n?)#yb>~DxpsaH3@q=;wtJB zzTk9E4fEV$!^*<3v%gjd0C~CB-|Q$xB7Q`PYe7mpDz4d$Oi-K+Ew)iTC6y!XG;%^w z_k4Y0VRTN*iyo)C>JfLtf-6Zb|Irbzd zX<7iEOZmp){HYt&RSjvq4!L8RB8Cm5J`z3XO@ zB+(1`S0g-9svg@#(KV@4q-3tkCXMXv`VU{cB?GhGOMM-XAGV~Ez9A^q&UhhAIn z`Rz;+`9n4ML#PPtf7*cmMce+%DT1cCFOfnLNo&5sjb@FQN#4#CBUSg>(Up!T4pD)9 z6wKQ>=gez6L0Z+jYX6x>vb7?~w?}$+5oz$XuedSO+k=FYT2l1{&O)0;ZchCgW+UdA z4fb;qCe6y$Uad==Y_AUTrpEIZT#Ch9Os@{eOUnm^Gk7bL_(8+>*ZDb}n9orV;Xb|V|_-~pzS>s#T%6xS!dxeGj%LbFJi zur#;K(!XK2Wm>j&N^Xw=VHQ~fJ^F6+8N0pB-VayXQk5Y#DcO}-eCtI5gI*kH2LOX6>?h?Ju9Y%kJ2(B!%j^pJwT2UWaLCv*y9OFhk!4OqG>NRo3IL-R`KH z9WN${LdaZ&dye3JO_v_q_|H6|uA!n*wSbk)!tUubN?aHQ&XFLgz#Clof%$I{`(Q4D~C5pfN>5Jz(DOF06kCxVoOH zlZx^i9mjSBNHUQVPAM|!k&&?hfGt7@tt_p3zpZTeVi{m9)0@)8%xt|aW3<(8x97W> z)lAHF{JbTm;Q0f3gb^hCTOB!N}X;vPgYcOM6_g`9PtUTRiTq0Gv)o@q0a zwS8RCzNKk}DcpbTw~t2mp1xB7z#({-T~hHuu(KRv&J86}tAUaEIrn-{aNSVtZl}KX zj?fA0Vu$<+skjcCCFm2|%S<%$g=3&cinwG~{1~zB&|U9~qyK>eYEqxCcr(M_jb9&15$FY4I~dTB39gm(hg- zmWiDZZer@ZBj7IqdOa1OMMDuP5V@Lk70zX;_Nc@aq)YNpj^_-px zN|}mdEesn-h+>v2uoPwcLOeH!HpC~y z_cZ16d~ghQe(w!g%J{^36FA3RepCF$V*Rp_NPqUyi)pz_;`P)>o`QT$+je`)<_|tL zRM_K79Qq?P7kET1bl~#j8!s8a2qC(Aq@~s;;=dKO){5Xa3%m?O$w|F~0M1N7SqU2U z^`e8U$;;Hdc2>_8xF3lBu1Z59DH$RGGpA6vVqhzfxM=sY7yqu#O~P_#trKOyZXJoj z#q55bM)=$=7qnPNF}~oza7gJ_e4f%yfvOPS!>aj*0Q0tv)Apw2Ozqn;$GOD;RWq?l z`I4K(^F`hUP^)DT?@_&P-=9(V=Ml*15sP`^{SV7Zo+m2J&n54F5FZFwL%~&GXBS%S z=!xa*qAqt~lqCHyc$xtI6`$JPE@gdV@qZt*La9kYoUJW~5qcJ8(hV@P{feLhCtnPi zj~Jh=WPm<-DTLky87K-w0Pnvj5(q-70#ev@pHw^RNt za;qN@@Aom7J_;?ILYHJ~7JIIgwJ?I+(MfZIVwjX1;F2YUQcjvV6spCRs>l}G=$7Jp)%fl>s@_xp z(-ah{wtN=*)8#w}x&+Wtohb5OGM)Wvn$TP}kz&R)Xon|xGj&cc)ETZq)9$p3Dmx7b z#%^s5#rc($wb0XgTmR8nE_?UMf8-m6J?FyuZ2*k|JGH7~$bm)aaBxZb-#_2Zg@wgw z5_WcX@$v8?i3NP0?#{_2ad2?tYS5Dv66CePnM)*#l_I|<8A3IoS*r#Jf&XSeiE042 zU`bJt`PJSe0cvQ!A%uTN2S2dV>Lx#1vd4ugE(E|`q$FcFj(_R>qO2U3larH~N%RFB z`b(7tov^U*H8yn}UkWka8Dn1t^;^GCw%8NxGj#EsC`Qf6T!TNtz{C8mr=Y9HUW6}P zK*Q?%f9lGy*u#{-&VRN^2ra*kFP>AzsfYq4LI`@qcKRuK%u`#jsx6C|O#;~BfzZl& zS+6ZOe&_4^pVAokYaISyS!r7x7L)RJOwv?waGpdH%{9!;HN2F@k*hq~drZdE6ZNe- z@=_vY8uGb>*Ow2LJZr_dXaRS@24U~zvyW-2}8w-x(hKJ8C5oXJi z=9H*wNd)_lUw3dH^af&Nj@86t8|2YHd}a6F)cpuD9=t0a*$ER~!`Q+a0FNcL!ftiSxe?~(GQT4@Eq&~ z0PKB~{Pv1}lIj@Jozp3wAo18~F;T@Fk3h#8SENCBRPdM1tgjXnFJekF z(+NddHfo!@#=nmmytfC-hp%1@+ZT#PjL~W~U-k@S;S1<=GVU^3L}+%?E(Dnq?gBd5 zzi6~phPN)+NZyAr*L)Ym9ZU6q8Qda}qb-C0ik|w&?(v_~y~^=FWPW1_sIQ@`R*jBK zl~wp8z)!FLEbehZg@++sS0UMnih-`Rbh_dxxO@D4bm9F4ECRqb#(I$M39()xwRX%u z+)umXETcmN0}czDcoSs(RT3R?Nn+&vAc78UKqP(=j#dYbn|Yi>p{$4cVy(Eq*tDU_ zV23`D?RJzLjPo-NwUUOJ0D{W(F6WOmdiQsuJ_!de`(GbGz7F?G)lO=?Z!BsR@v{0K zpSkne*`{npAVA1|WPv2`(o&2c_TsQM*h%e}UsK+8o>TY*_cWgV(dG7&0BGz+>+g7#45u$PVT)M^X zp7I0#Wi2JNGNhYwH-1pph?RkulMy-a6k<41Rm#1v>LhZsc86YWL1j#mN-!>D{tncpr&OT`N!Y2?Xh)R zn6Hs0-J0|?2~yWrRpN88KkE<$$v_H}69WSA?Y!rf(P-xqpb7e^yP0=0Az-uS-!TCe zoLRYwH?&4ZL0*Edf>18FQAo|vs&5zACnh@R@`uhDyCDNBW~FS(9J`uYjS z*P>c^t{r8*#K#V7Jm(ENure1z1IC~|!I6{NY0(tCRD1y%x500x>UI+jIN4K?m!mLW%Z#-j(gZt{>(HGdzr<&JqR)Kna#Wko%;JekOzMWc&OCiatbscV#wfl+f z3Hf{(-e3b)onZP#+^a1~GzL)f#W>6*Bj6dh^bUIFch|i*_i;$VtLzINm7gI(zdH~4 zZjnJ5<3sr8{12fx=uXx5JoO8btG)&qY{g^ZU-ZTy&_g(K*W_t$@{a_b(;SHahe@&Z zSxv{-^bOo+G~J|lpv`}^m6T!0$t5uzx(e}$$>BCoFIF&oo=W^Q8Wp>e1}>Wldca+) zcKxkikW*Op*kPu&2{801SEX`5vR3|n9?IcJ^&l5_o3>J3xK%>g%EF?!qQdv?%wPyhfHZX5vV?J~3i;aeuqkk4n?JPVMe44YEjXDi9)TPl z9u*dVNA=}+6*KR{8-^}vbym@*{9Nis##Xc8L*j|?$A?5{&!g*q%?44{!qf zQ;qMIht1o-FURK!cPVOox%vQ+QK7VBTi>f+g~ILdJ(jV4Xj#j!i_V1|}AnUs5V{6y#;LPtL9*q<@DwL;Q}ud}Jkb+wS0%U)47c zCgIhb=X@5YWM!?jm@dG^#Z^~Vhw`tkKEK+Z4!Ao1^TtBb5!zQA58UkBP6ZSX+m%q& zn5+ul{OJj59v)a2$&123dSW=s7N~8nd)dRAjEASKRUKK7%64OI-?2~V#Y)gR>+?$m zGC-cv%Euo*5iVDc3E!{jb8Q;_jqHfA?({`yBwDNw!SG{irW8T@O<4a3 z>eh;?swArWDm;qf`r=gGR@$8i4cEO|Ldn5n%o+UI8w)69(4F1zUVQpf-)c?r1o(o% z-RIh*1L-92J$sSHrMhr4NvWHhhAjM1%2b%fc+6S5->s;hj=#sifdQ6wD(uHZ?!V|i z^|voSeZFPK@J%HDN2#zEhR#SS-NziKA>X_`U`4aImK#m1*(!_jh21avdtMm~SD%$^ zyk9DWisU+94DPlE!(t2Doqu^h01}P#n#4kzkXAxW{jbV2#y03&8j+)iRqGt!mPWq_ zQS7%)cc50!8BdXY_{9frD4scfO$q_fl|zn{)_vd$FJV4z(qfQ~8ubJ{H4c)c}}hJ7!3;-fm7!P?q1a0B;45TSUzPv#=)^B5$Ay`G>oan~YG*L!a`??8zM` zWINmTRI~WsAz4x_UDgZ2)lyXN1kvJ0T-EqO!XZT0DoEfbu8DEO?8!k?WTTq+!;MFj zP%qjI?vl7)4j-xR$2iV@@lH+?Rc^or`%cmD*N!agem%SN&Ex=e;Kz;FCSr<49kt+E1}{7m@sD(Y68#0b9PJ`<&_P6~a(LJa>kH9cLO^*(rlHRv+TQTL6-^FOZIBSx(D@6Ns$79zg9 z2&Yh!5fYSfk$9|P`ubTUVAp!F3OFukXp&&y;!>I|d^YFm7R$EI8yv`&n3}O1(^9Jlw7R`HMu@x2$dRU7lfycy*!?;J$ zl>rZd35kiWcuM;EAPL!TAHbtq_R-N%3tF4={?ujV(9a$!=KsXC&E4UVkc?Uog$)7l z(E2{0(rCgS9S6ttY@_=|APnOQqxgmLCkfar<%pOd^Pe!9W^+yU&%|_jnz13t89V`7 zYa;NE8G3XpXw66+bd-fGP(-avrY+s+ECnQ z0v-R5rBVsFy#?qf)Gkxt`i(INIDSl#U1|2gHzN^D6i&edI1u0daR)G&200r08oX=I zhKJM;tb+fF0Wb-%H0b`vX5WN^de$lOtiNW{Ht4g4X0!g$W@P&_Ym~?XACgpTqi_oS zf4eXjg(cvs-6`zx_GGow?NlII*NbUOA1i*fO{3rtcTJI)NS8NR4OtL3i|0mnm6f{s zW=TLf;xW^DW6K2BZulY7x({#0%y4Tx-xQxAT*GVt@~3p=w)8#%YS10R%1f>%3!AgQm)ap_wQvtv~1TuzCmOseiXA`NwV zFk5#P5s+qQi}mv_9$}ZToC39F9jafJ9xKnPNg=S%I-YNbVkf=@N51t7&jd(#{8QBz zRC26B!uZ8j{x(-#QdEQ#)ce6`-O>W=awbpD-^8CshsRI&oYX7atJDvwKN|C(VbvVI za;K;ZL)qK31wLiC1B6KL?!L*<$oR048Sl84Bf4efKmHV-M>SQ7!=CE#gt0h%O;jDK z29MKfQ-8*=*W!lw2Owwj#{uVaKePQff~oRePUkX6 z@3P6Svq!tH|I8jD&i~x7NX;tsbw2*;8c|xa^&qTeu(#2E$+Cg@6MDDfqJ5iOQdjzt0G*@MM34eoSnct7+)4)Gb~aVo~wsKV#=uurKz) ze)3*R4geT)M(MUN9NJtH>+-sXT|N{&IhjD7&aU;?dJ)85)LagZuOvYI^gd6ENH0-( z^{G!ZJzagxef?mUcA|QqlWj7TBD_0d9w?hCt9{kVz)oZet9n~~Q&G0n?q!Q8I?gIm zA>_mX2;Qf#&Q{n}-k3oNj`eTZ(F%JbLxkI@g@jbxz$*N%LCas+cs1ZjqECLjIq0nnkqL9fpEzGXKAe`cr+GNX1@UR?VqClVVp%w;$xgJ4 z)hJ-|PrtBu1^vTc8CL(Lr&h5X0}S1zd$`Cpb^{FSY(K6DjKRKc_aT`)m zoL{OLD~I`$2Twa50Q=jWUV*ajX9iG!^YY&W%}@r1b*;t$WI@u(!l6kVQaetE>0|YI6lqM{A2s%AiW@X0jjE?5RFBk>9ldALbrfZ3{U+m&Z6~yYlLUp+~ zx=gW^NR@0^ABd(9AqYZ>szD`N(rfzic6#ib9!Y{d*z*<*&;7I}U#(zCoPFv;l?`?^ z-6??!Z^Do^*t6Jt7$iVKTAFBm1rqQl0EKQ+9XNX8Ew_)W;q)xUz4C}QkJ;Dbt?wi1 zJ_v`MUBk2D0D#w%4rg2tMYL%ugndQD+M1E4^y8D%(Ny zuP&Dw&4xOh0rhzQw94b-UsB0ed1uwVRz?s+C?#D8ZA6@efWQ64R>Mb)+fNO=e9vzz z0N>kLPN?K99-}tXP%!PIC&NF7rR;F9Zq7-wi3dfo^{xS*kqnN9dZ|9San27tk+wg3 zpu+k=8bmkPr<(j>llFZcG2%QVpc6FUenk6nvlKUTkSwd|y;J8s=VgFn4VV}lm|+3H zPca+(8V;)KhJI}fJ4cA@8zt|~$4_Q)utBKa+@bG>4%N;41$iKM)wM!ClK9le?Oq`aUZVZ-7x(wi%ih`c6v^P20M6rQ-D(w*JouV}V|h1&@W&oIp24{Y;e`Bfn-3LIBnz2pEka@P?kga`ONn0GP;HTbx5v%O%@Zy&HA7lZ$ z&_ShR<(M-QuYH)YZ%UurlIJ(91sYx>-tjD|>x@jsQ&q+mXQ3}I)YxTF8}lyJc3anY z^m8Uz(%C%X39iCeIDVTgvQ{*@cwxa8aK3!^5{xo7}ir?=-l1Ynj;x4LY(j%GXN-AvXS)X@A@Xy6RJLw+7*Gs*aB%rAE=(?&a>sPu1;@%b9)2mlDceyWh6jACdHt zP#pL5C~Tx!E_T9<+zu^(igG`R&iSkUne{b9xP0(r&KT(<@cYkvLg2&(a>N?qIjaa{ z1>zeEux4i=@vj97HYERD0ssH+%7@;z5xc9E+1c6EW~V{$_MD>yx##qkr%Mo68&Q5; z?&=aGLD$gG*xTPP4y~)J1Mfw6x)@;u1kwBUCUZlCa=_N4Q^gY!Jmz;;!F;9Jxj9Hd z7nl0tV(N(5=2KfD(A=DwynJ-Q{>6o3vyQEu-8zvFU~g}~aqcdaUsF)9GoHcQ(9mEs z@WW&6@GP*qRDlhU&*HZ+H&6cTQKQ449)tO==ZyuY`H}`*V#mLZ>gwvaxHzTavXYXi zO#d;{!^1=T42&_p;SD>ok#-jvgq0QdVEKuVS$Zm^s)R@cOv^x&(LNO_V#gw4|l1-23;uF00QR zd}(!>1OimEBFoP*;3#b8XP<|7NZBHmHx|E&sFe%AYB*qSZQbT}N+dg-D;BAQrbv?j zwn4xizh}DmF;gUH$YUWa#1PNG)YR1BVJU5GZQN|e)vn1^a_-~ynf#?TN|Mwxg|GGQv zdQN`y`SDitzC%s%lDVDvNH6S(v%4?TLxAiHV7> zZiZ5^w=K3%5fvTI$jr=4Pfy@}_-AP!a&%I*ycdBBQER*)wzYq@G6IsKa$sfbYvBI? DtuuN( literal 0 HcmV?d00001 diff --git a/docs/img/project-quota1.png b/docs/img/project-quota1.png new file mode 100644 index 0000000000000000000000000000000000000000..d0a9903dce50e8af001d71de1b53ac86c9852781 GIT binary patch literal 85744 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/img/tag-retention1.png b/docs/img/tag-retention1.png new file mode 100644 index 0000000000000000000000000000000000000000..9990d7a306fe65a91b06ce78f2707ea3df0e18a4 GIT binary patch literal 12995 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 JXjuIHUjX1BWT^lE literal 0 HcmV?d00001 diff --git a/docs/img/tag-retention3.png b/docs/img/tag-retention3.png new file mode 100644 index 0000000000000000000000000000000000000000..7cd798d7909d4311dbcebfdf66f1ca5a4939e471 GIT binary patch literal 44733 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 literal 0 HcmV?d00001 diff --git a/docs/img/tag-retention4.png b/docs/img/tag-retention4.png new file mode 100644 index 0000000000000000000000000000000000000000..6f02f89bacce8ee64559332e47a853b21a7a4dda GIT binary patch literal 5846 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 R`LJO^QdACD^7)JJ{{o&?wy*#I literal 0 HcmV?d00001 diff --git a/docs/img/webhooks2.png b/docs/img/webhooks2.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2498995321cff035898d846bd9f71b001c7bef GIT binary patch literal 23850 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 literal 0 HcmV?d00001 diff --git a/docs/img/webhooks3.png b/docs/img/webhooks3.png new file mode 100644 index 0000000000000000000000000000000000000000..76d0472cb9bf92ae1e8c138e3ae512de1d7350f5 GIT binary patch literal 57363 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 ZA^5YO65TX?fg__yi_3$HMPI-F{{YP>!C(LY literal 0 HcmV?d00001 diff --git a/docs/img/webhooks4.png b/docs/img/webhooks4.png new file mode 100644 index 0000000000000000000000000000000000000000..790dab3ecedfa246b4acd05820ef40d40a21c986 GIT binary patch literal 3010 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 O0KfoxU$<1pDeOPLUUts_ literal 0 HcmV?d00001 diff --git a/docs/user_guide.md b/docs/user_guide.md index bbe3b472f..352969b42 100644 --- a/docs/user_guide.md +++ b/docs/user_guide.md @@ -1,775 +1,1100 @@ -# User Guide -## Overview -This guide walks you through the fundamentals of using Harbor. You'll learn how to use Harbor to: - -* [Manage your projects.](#managing-projects) -* [Manage members of a project.](#managing-members-of-a-project) -* [Replicate resources between Harbor and non-Harbor registries.](#replicating-resources) -* [Retag images within Harbor](#retag-images) -* [Search projects and repositories.](#searching-projects-and-repositories) -* [Manage labels.](#managing-labels) -* [Manage Harbor system if you are the system administrator:](#administrator-options) - * [Manage users.](#managing-user) - * [Manage registries.](#managing-registry) - * [Manage replication rules.](#managing-replication) - * [Manage authentication.](#managing-authentication) - * [Manage project creation.](#managing-project-creation) - * [Manage self-registration.](#managing-self-registration) - * [Manage email settings.](#managing-email-settings) - * [Manage registry read only.](#managing-registry-read-only) - * [Manage role by LDAP group.](#managing-role-by-ldap-group) -* [Pull and push images using Docker client.](#pulling-and-pushing-images-using-docker-client) -* [Add description to repositories](#add-description-to-repositories) -* [Delete repositories and images.](#deleting-repositories) -* [Content trust. ](#content-trust) -* [Vulnerability scanning via Clair.](#vulnerability-scanning-via-clair) -* [Pull image from Harbor in Kubernetes.](#pull-image-from-harbor-in-kubernetes) -* [Manage Helm Charts](#manage-helm-charts) - * [Manage Helm Charts via portal](#manage-helm-charts-via-portal) - * [Working with Helm CLI](#working-with-helm-cli) -* [Online Garbage Collection.](#online-garbage-collection) -* [View build history.](#build-history) -* [Using CLI after login via OIDC based SSO](#using-oidc-cli-secret) -* [Manage robot account of a project.](#robot-account) -* [Using API Explorer](#api-explorer) - -## Role Based Access Control(RBAC) - -![rbac](img/rbac.png) - -Harbor manages images through projects. Users can be added into one project as a member with one of three different roles: - -* **Guest**: Guest has read-only privilege for a specified project. -* **Developer**: Developer has read and write privileges for a project. -* **Master**: Master has elevated permissions beyond those of 'Developer' including the ability to scan images, view replications jobs, and delete images and helm charts. -* **ProjectAdmin**: When creating a new project, you will be assigned the "ProjectAdmin" role to the project. Besides read-write privileges, the "ProjectAdmin" also has some management privileges, such as adding and removing members, starting a vulnerability scan. - -Besides the above three roles, there are two system-level roles: - -* **SysAdmin**: "SysAdmin" has the most privileges. In addition to the privileges mentioned above, "SysAdmin" can also list all projects, set an ordinary user as administrator, delete users and set vulnerability scan policy for all images. The public project "library" is also owned by the administrator. -* **Anonymous**: When a user is not logged in, the user is considered as an "Anonymous" user. An anonymous user has no access to private projects and has read-only access to public projects. - -See detailed permissions matrix listed here: https://github.com/goharbor/harbor/blob/master/docs/permissions.md - -## User account -Harbor supports different authentication modes: - -* **Database(db_auth)** - - Users are stored in the local database. - - A user can register himself/herself in Harbor in this mode. To disable user self-registration, refer to the [installation guide](installation_guide.md) for initial configuration, or disable this feature in [Administrator Options](#administrator-options). When self-registration is disabled, the system administrator can add users into Harbor. - - When registering or adding a new user, the username and email must be unique in the Harbor system. The password must contain at least 8 characters with 1 lowercase letter, 1 uppercase letter and 1 numeric character. - - When you forgot your password, you can follow the below steps to reset the password: - - 1. Click the link "Forgot Password" in the sign in page. - 2. Input the email address entered when you signed up, an email will be sent out to you for password reset. - 3. After receiving the email, click on the link in the email which directs you to a password reset web page. - 4. Input your new password and click "Save". - -* **LDAP/Active Directory (ldap_auth)** - - Under this authentication mode, users whose credentials are stored in an external LDAP or AD server can log in to Harbor directly. - - When an LDAP/AD user logs in by *username* and *password*, Harbor binds to the LDAP/AD server with the **"LDAP Search DN"** and **"LDAP Search Password"** described in [installation guide](installation_guide.md). If it succeeded, Harbor looks up the user under the LDAP entry **"LDAP Base DN"** including substree. The attribute (such as uid, cn) specified by **"LDAP UID"** is used to match a user with the *username*. If a match is found, the user's *password* is verified by a bind request to the LDAP/AD server. Uncheck **"LDAP Verify Cert"** if the LDAP/AD server uses a self-signed or an untrusted certificate. - - Self-registration, deleting user, changing password and resetting password are not supported under LDAP/AD authentication mode because the users are managed by LDAP or AD. - -* **OIDC Provider (oidc_auth)** - - With this authentication mode, regular user will login to Harbor Portal via SSO flow. - After the system administrator configure Harbor to authenticate via OIDC (more details refer to [this section](#managing-authentication)), - a button `LOGIN VIA OIDC PROVIDER` will appear on the login page. - ![oidc_login](img/oidc_login.png) - - By clicking this button user will kick off the SSO flow and be redirected to the OIDC Provider for authentication. After a successful - authentication at the remote site, user will be redirected to Harbor. There will be an "onboard" step if it's the first time the user - authenticate using his account, in which there will be a dialog popped up for him to set his user name in Harbor: - ![oidc_onboar](img/oidc_onboard_dlg.png) - - This user name will be the identifier for this user in Harbor, which will be used in the cases such as adding member to a project, assigning roles, etc. - This has to be a unique user name, if another user has used this user name to onboard, user will be prompted to choose another one. - - Regarding this user to use docker CLI, please refer to [Using CLI after login via OIDC based SSO](#using-oidc-cli-secret) - - **NOTE:** - 1. After the onboard process, you still have to login to Harbor via SSO flow, the `Username` and `Password` fields are only for - local admin to login when Harbor is configured authentication via OIDC. - 2. Similar to LDAP authentication mode, self-registration, updating profile, deleting user, changing password and - resetting password are not supported. - - -## Managing projects -A project in Harbor contains all repositories of an application. No images can be pushed to Harbor before the project is created. RBAC is applied to a project. There are two types of projects in Harbor: - -* **Public**: All users have the read privilege to a public project, it's convenient for you to share some repositories with others in this way. -* **Private**: A private project can only be accessed by users with proper privileges. - -You can create a project after you signed in. Check on the "Access Level" checkbox will make this project public. - -![create project](img/new_create_project.png) - -After the project is created, you can browse repositories, members, logs, replication and configuration using the navigation tab. - -![browse project](img/new_browse_project.png) - -There are two views to show repositories, list view and card view, you can switch between them by clicking the corresponding icon. - -![browse repositories](img/browse_project_repositories.png) - -All logs can be listed by clicking "Logs". You can apply a filter by username, or operations and dates under "Advanced Search". - -![browse project](img/log_search_advanced.png) - -![browse project](img/new_project_log.png) - -Project properties can be changed by clicking "Configuration". - -* To make all repositories under the project accessible to everyone, select the `Public` checkbox. - -* To prevent un-signed images under the project from being pulled, select the `Enable content trust` checkbox. - -* To prevent vulnerable images under the project from being pulled, select the `Prevent vulnerable images from running` checkbox and change the severity level of vulnerabilities. Images cannot be pulled if their level equals to or higher than the currently selected level. - -* To activate an immediate vulnerability scan on new images that are pushed to the project, select the `Automatically scan images on push` checkbox. - -![browse project](img/project_configuration.png) - -## Managing members of a project -### Adding members -You can add members with different roles to an existing project. You can add a LDAP/AD user to project members under LDAP/AD authentication mode. - -![browse project](img/new_add_member.png) - -### Updating and removing members -You can check one or more members, then click `ACTION`, choose one role to batch switch checked members' roles or remove them from the project. - -![browse project](img/new_remove_update_member.png) - -## Replicating resources -Replication allows users to replicate resources (images/charts) between Harbor and non-Harbor registries in both pull or push mode. - -Once the system administrator has set a rule, all resources that match the defined [filter](#resource-filter) patterns will be replicated to the destination registry when the [triggering condition](#trigger-mode) is matched. Each resource will start a task to run. If the namespace does not exist on the destination registry, a new namespace will be created automatically. If it already exists and the user configured in the policy has no write privilege to it, the process will fail. The member information will not be replicated. - -There may be a bit of delay during replication based on the situation of the network. If a replication task fails, it will be re-scheduled a few minutes later and retried times. - -**Note:** Due to API changes, replication between different versions of Harbor is not supported. - -### Creating replication endpoints - -To replicate image repositories from one instance of Harbor to another Harbor or non-Harbor registry, you first create replication endpoints. - -1. Go to **Registries** and click the **+ New Endpoint** button. - - ![New replication endpoint](img/replication-endpoint1.png) -1. For **Provider**, use the drop-down menu to select the type of registry to set up as a replication endpoint. - - The endpoint can be another Harbor instance, or a non-Harbor registry. Currently, the following non-Harbor registries are supported: - - - Docker Hub - - Docker registry - - AWS Elastic Container Registry - - Azure Container Registry - - Ali Cloud Container Registry - - Google Container Registry - - Huawei SWR - - Helm Hub - - ![Replication providers](img/replication-endpoint2.png) - -1. Enter a suitable name and description for the new replication endpoint. -1. Enter the full URL of the registry to set up as a replication endpoint. - - For example, to replicate to another Harbor instance, enter https://harbor_instance_address:443. The registry must exist and be running before you create the endpoint. -1. Enter the Access ID and Access Secret for the endpoint registry instance. - - Use an account that has the appropriate privileges on that registry, or an account that has write permission on the corresponding project in a Harbor registry. - - **NOTES**: - - AWS ECR adapters should use access keys, not a username and password. The access key should have sufficient permissions, such as storage permission. - - Google GCR adapters should use the entire JSON key generated in the service account. The namespace should start with the project ID. -1. Optionally, select the **Verify Remote Cert** check box. - - Deselect the check box if the remote registry uses a self-signed or untrusted certificate. -1. Click **Test Connection**. -1. When you have successfully tested the connection, click **OK**. - -### Creating a replication rule -Login as a system administrator user, click `NEW REPLICATION RULE` under `Administration->Replications` and fill in the necessary fields. You can choose different replication modes, [resource filters](#resource-filter) and [trigger modes](#trigger-mode) according to the different requirements. If there is no endpoint available in the list, follow the instructions in the [Creating replication endpoints](#creating-replication-endpoints) to create one. Click `SAVE` to create a replication rule. - -![browse project](img/create_rule.png) - -#### Resource filter -Three resource filters are supported: -* **Name**: Filter resources according to the name. -* **Tag**: Filter resources according to the tag. -* **Resource**: Filter images according to the resource type. - -The terms supported in the pattern used by name filter and tag filter are as follows: -* **\***: Matches any sequence of non-separator characters `/`. -* **\*\***: Matches any sequence of characters, including path separators `/`. -* **?**: Matches any single non-separator character `/`. -* **{alt1,...}**: Matches a sequence of characters if one of the comma-separated alternatives matches. - -**Note:** `library` must be added if you want to replicate the official images of Docker Hub. For example, `library/hello-world` matches the official hello-world images. - -Pattern | String(Match or not) ----------- | ------- -`library/*` | `library/hello-world`(Y)
    `library/my/hello-world`(N) -`library/**` | `library/hello-world`(Y)
    `library/my/hello-world`(Y) -`{library,goharbor}/**` | `library/hello-world`(Y)
    `goharbor/harbor-core`(Y)
    `google/hello-world`(N) -`1.?` | `1.0`(Y)
    `1.01`(N) - -#### Trigger mode -* **Manual**: Replicate the resources manually when needed. **Note**: The deletion operations are not replicated. -* **Scheduled**: Replicate the resources periodically. **Note**: The deletion operations are not replicated. -* **Event Based**: When a new resource is pushed to the project, it is replicated to the remote registry immediately. Same to the deletion operation if the `Delete remote resources when locally deleted` checkbox is selected. - -### Starting a replication manually -Select a replication rule and click `REPLICATE`, the resources which the rule is applied to will be replicated from the source registry to the destination immediately. - -![browse project](img/start_replicate.png) - -### Listing and stopping replication executions -Click a rule, the execution records which belong to this rule will be listed. Each record represents the summary of one execution of the rule. Click `STOP` to stop the executions which are in progress. - -![browse project](img/list_stop_executions.png) - -### Listing tasks -Click the ID of one execution, you can get the execution summary and the task list. Click the log icon can get the detail information for the replication progress. -**Note**: The count of `IN PROGRESS` status in the summary includes both `Pending` and `In Progress` tasks. - -![browse project](img/list_tasks.png) - -### Deleting the replication rule -Select the replication rule and click `DELETE` to delete it. Only rules which have no in progress executions can be deleted. - -![browse project](img/delete_rule.png) - -## Retag Images - -Images retag helps users to tag images in Harbor, images can be tagged to different repositories and projects, as long as the users have sufficient permissions. For example, - -``` -release/app:stg --> release/app:prd -develop/app:v1.0 --> release/app:v1.0 -``` -To retag an image, users should have read permission (guest role or above) to the source project and write permission (developer role or above) to the target project. - -In Harbor portal, select the image you'd like to retag, and click the enabled `Retag` button to open the retag dialog. - -![retag image](img/retag_image.png) - -In the retag dialog, project name, repository name and the new tag should be specified. On click the `CONFIRM` button, the new tag would be created instantly. You can check the new tag in the corresponding project. - -## Searching projects and repositories -Entering a keyword in the search field at the top lists all matching projects and repositories. The search result includes both public and private repositories you have access to. - -![browse project](img/new_search.png) - -## Managing labels -Harbor provides two kinds of labels to isolate kinds of resources(only images for now): -* **Global Level Label**: Managed by system administrators and used to manage the images of the whole system. They can be added to images under any projects. -* **Project Level Label**: Managed by project administrators under a project and can only be added to the images of the project. - -### Managing global level labels -The system administrators can list, create, update and delete the global level labels under `Administration->Configuration->Labels`: - -![manage global level labels](img/manage_global_level_labels.png) - -### Managing project level labels -The project administrators and system administrators can list, create, update and delete the project level labels under `Labels` tab of the project detail page: - -![manage project level labels](img/manage_project_level_labels.png) - -### Adding labels to/remove labels from images -Users who have system administrator, project administrator or project developer role can click the `ADD LABELS` button to add labels to or remove labels from images. The label list contains both globel level labels(come first) and project level labels: - -![add labels to images](img/add_labels_to_images.png) - -### Filtering images by labels -The images can be filtered by labels: - -![filter images by labels](img/filter_images_by_label.png) - -## Administrator options -### Managing user -Administrator can add "Administrator" role to one or more ordinary users by checking checkboxes and clicking `SET AS ADMINISTRATOR`. To delete users, checked checkboxes and select `DELETE`. Deleting user is only supported under database authentication mode. - -![browse project](img/new_set_admin_remove_user.png) - -### Managing registry -You can list, add, edit and delete registries under `Administration->Registries`. Only registries which are not referenced by any rules can be deleted. - -![browse project](img/manage_registry.png) - -### Managing replication -You can list, add, edit and delete rules under `Administration->Replications`. - -![browse project](img/manage_replication.png) - -### Managing authentication -You can change authentication mode between **Database**(default) and **LDAP** before any user is added, when there is at least one user(besides admin) in Harbor, you cannot change the authentication mode. -![browse project](img/new_auth.png) -When using LDAP mode, user's self-registration is disabled. The parameters of LDAP server must be filled in. For more information, refer to [User account](#user-account). -![browse project](img/ldap_auth.png) - -When using OIDC mode, user will login Harbor via OIDC based SSO. A client has to be registered on the OIDC provider and Harbor's callback URI needs to be associated to that client as a redirectURI. -![OIDC settings](img/oidc_auth_setting.png) - -The settings of this auth mode: -* OIDC Provider Name: The name of the OIDC Provider. -* OIDC Provider Endpoint: The URL of the endpoint of the OIDC provider(a.k.a the Authorization Server in OAuth's terminology), -which must service the "well-known" URI for its configuration, more details please refer to https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationRequest -* OIDC Client ID: The ID of client configured on OIDC Provider. -* OIDC Client Secret: The secret for this client. -* OIDC Scope: The scope values to be used during the authentication. It is the comma separated string, which must contain `openid`. -Normally it should also contain `profile` and `email`. For getting the refresh token it should also contain `offline_access`. Please check with the administrator of the OIDC Provider. -* Verify Certificate: Whether to check the certificate when accessing the OIDC Provider. if you are running the OIDC Provider with self-signed -certificate, make sure this value is set to false. - - -### Managing project creation -Use the **Project Creation** drop-down menu to set which users can create projects. Select **Everyone** to allow all users to create projects. Select **Admin Only** to allow only users with the Administrator role to create projects. -![browse project](img/new_proj_create.png) - -### Managing self-registration -You can manage whether a user can sign up for a new account. This option is not available if you use LDAP authentication. -![browse project](img/new_self_reg.png) - -### Managing email settings -You can change Harbor's email settings, the mail server is used to send out responses to users who request to reset their password. -![browse project](img/new_config_email.png) - -### Managing registry read only -You can change Harbor's registry read only settings, read only mode will allow 'docker pull' while preventing 'docker push' and the deletion of repository and tag. -![browse project](img/read_only.png) - -If it set to true, deleting repository, tag and pushing image will be disabled. -![browse project](img/read_only_enable.png) - - -``` -$ docker push 10.117.169.182/demo/ubuntu:14.04 -The push refers to a repository [10.117.169.182/demo/ubuntu] -0271b8eebde3: Preparing -denied: The system is in read only mode. Any modification is prohibited. -``` -### Managing role by LDAP group - -If auth_mode is ldap_auth, you can manage project role by LDAP/AD group. please refer [manage role by ldap group guide](manage_role_by_ldap_group.md). - -## Pulling and pushing images using Docker client - -**NOTE: Harbor only supports Registry V2 API. You need to use Docker client 1.6.0 or higher.** - -Harbor supports HTTP by default and Docker client tries to connect to Harbor using HTTPS first, so if you encounter an error as below when you pull or push images, you need to configure insecure registry. Please, read [this document](https://docs.docker.com/registry/insecure/) in order to understand how to do this. - - -```Error response from daemon: Get https://myregistrydomain.com/v1/users/: dial tcp myregistrydomain.com:443 getsockopt: connection refused.``` - -If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add -`--insecure-registry myregistrydomain.com` to the daemon's start up arguments. - - -In the case of HTTPS, if you have access to the registry's CA certificate, simply place the CA certificate at /etc/docker/certs.d/myregistrydomain.com/ca.crt . - -### Pulling images -If the project that the image belongs to is private, you should sign in first: - -```sh -$ docker login 10.117.169.182 -``` - -You can now pull the image: - -```sh -$ docker pull 10.117.169.182/library/ubuntu:14.04 -``` - -**Note: Replace "10.117.169.182" with the IP address or domain name of your Harbor node. You cannot pull a unsigned image if you enabled content trust.** - -### Pushing images -Before pushing an image, you must create a corresponding project on Harbor web UI. - -First, log in from Docker client: - -```sh -$ docker login 10.117.169.182 -``` - -Tag the image: - -```sh -$ docker tag ubuntu:14.04 10.117.169.182/demo/ubuntu:14.04 -``` - -Push the image: - -```sh -$ docker push 10.117.169.182/demo/ubuntu:14.04 -``` - -**Note: Replace "10.117.169.182" with the IP address or domain name of your Harbor node.** - -### Add description to repositories - -After pushing an image, an Information can be added by project admin to describe this repository. - -Go into the repository and select the "Info" tab, and click the "EDIT" button. An textarea will appear and enter description here. Click "SAVE" button to save this information. - -![edit info](img/edit_description.png) - -### Download the harbor certs - -Users can click the "registry certificate" link to download the registry certificate. - -![browse project](img/download_harbor_certs.png) - -### Deleting repositories - -Repository deletion runs in two steps. - -First, delete a repository in Harbor's UI. This is soft deletion. You can delete the entire repository or just a tag of it. After the soft deletion, -the repository is no longer managed in Harbor, however, the files of the repository still remain in Harbor's storage. - -![browse project](img/new_delete_repo.png) -![browse project](img/new_delete_tag.png) - -**CAUTION: If both tag A and tag B refer to the same image, after deleting tag A, B will also get deleted. if you enabled content trust, you need to use notary command line tool to delete the tag's signature before you delete an image.** - -Next, delete the actual files of the repository using the [garbage collection](#online-garbage-collection) in Harbor's UI. - -### Content trust -**NOTE: Notary is an optional component, please make sure you have already installed it in your Harbor instance before you go through this section.** -If you want to enable content trust to ensure that images are signed, please set two environment variables in the command line before pushing or pulling any image: -```sh -export DOCKER_CONTENT_TRUST=1 -export DOCKER_CONTENT_TRUST_SERVER=https://10.117.169.182:4443 -``` -If you push the image for the first time, You will be asked to enter the root key passphrase. This will be needed every time you push a new image while the ``DOCKER_CONTENT_TRUST`` flag is set. -The root key is generated at: ``/root/.docker/trust/private/root_keys`` -You will also be asked to enter a new passphrase for the image. This is generated at ``/root/.docker/trust/private/tuf_keys/[registry name] /[imagepath]``. -If you are using a self-signed cert, make sure to copy the CA cert into ```/etc/docker/certs.d/10.117.169.182``` and ```$HOME/.docker/tls/10.117.169.182:4443/```. When an image is signed, it is indicated in the Web UI. -**Note: Replace "10.117.169.182" with the IP address or domain name of your Harbor node. In order to use content trust, HTTPS must be enabled in Harbor.** - - -When an image is signed, it has a tick shown in UI; otherwise, a cross sign(X) is displayed instead. -![browse project](img/content_trust.png) - -### Vulnerability scanning via Clair -**CAUTION: Clair is an optional component, please make sure you have already installed it in your Harbor instance before you go through this section.** - -Static analysis of vulnerabilities is provided through open source project [Clair](https://github.com/coreos/clair). You can initiate scanning on a particular image, or on all images in Harbor. Additionally, you can also set a policy to scan all the images at a specified time everyday. - -**Vulnerability metadata** - -Clair depends on the vulnerability metadata to complete the analysis process. After the first initial installation, Clair will automatically start to update the metadata database from different vulnerability repositories. The updating process may take a while based on the data size and network connection. If the database has not been fully populated, there is a warning message at the footer of the repository datagrid view. -![browse project](img/clair_not_ready.png) - -The 'database not fully ready' warning message is also displayed in the **'Vulnerability'** tab of **'Configuration'** section under **'Administration'** for your awareness. -![browse project](img/clair_not_ready2.png) - -Once the database is ready, an overall database updated timestamp will be shown in the **'Vulnerability'** tab of **'Configuration'** section under **'Administration'**. -![browse project](img/clair_ready.png) - -**Scanning an image** - -Enter your project, select the repository. For each tag there will be an 'Vulnerability' column to display vulnerability scanning status and related information. You can select the image and click the "SCAN" button to trigger the vulnerability scan process. -![browse project](img/scan_image.png) -**NOTES: Only the users with 'Project Admin' role have the privilege to launch the analysis process.** - -The analysis process may have the following status that are indicated in the 'Vulnerability' column: -* **Not Scanned:** The tag has never been scanned. -* **Queued:** The scanning task is scheduled but not executed yet. -* **Scanning:** The scanning process is in progress. -* **Error:** The scanning process failed to complete. -* **Complete:** The scanning process was successfully completed. - -For the **'Not Scanned'** and **'Queued'** statuses, a text label with status information is shown. For the **'Scanning'**, a progress bar will be displayed. -If an error occurred, you can click on the **'View Log'** link to view the related logs. -![browse project](img/log_viewer.png) - -If the process was successfully completed, a result bar is created. The width of the different colored sections indicates the percentage of features with vulnerabilities for a particular severity level. -* **Red:** **High** level of vulnerabilities -* **Orange:** **Medium** level of vulnerabilities -* **Yellow:** **Low** level of vulnerabilities -* **Grey:** **Unknown** level of vulnerabilities -* **Green:** **No** vulnerabilities -![browse project](img/bar_chart.png) - -Move the cursor over the bar, a tooltip with summary report will be displayed. Besides showing the total number of features with vulnerabilities and the total number of features in the scanned image tag, the report also lists the counts of features with vulnerabilities of different severity levels. The completion time of the last analysis process is shown at the bottom of the tooltip. -![browse project](img/summary_tooltip.png) - -Click on the tag name link, the detail page will be opened. Besides the information about the tag, all the vulnerabilities found in the last analysis process will be listed with the related information. You can order or filter the list by columns. -![browse project](img/tag_detail.png) - -**NOTES: You can initiate the vulnerability analysis for a tag at anytime you want as long as the status is not 'Queued' or 'Scanning'.** - -**Scanning all images** - -In the **'Vulnerability'** tab of **'Configuration'** section under **'Administration'**, click on the **'SCAN NOW'** button to start the analysis process for all the existing images. - -**NOTES: The scanning process is executed via multiple concurrent asynchronous tasks. There is no guarantee on the order of scanning or the returned results.** -![browse project](img/scan_all.png) - -To avoid frequently triggering the resource intensive scanning process, the availability of the button is restricted. It can be only triggered once in a predefined period. The next available time will be displayed besides the button. -![browse project](img/scan_all2.png) - -**Scheduled Scan by Policy** - -You can set policies to control the vulnerability analysis process. Currently, two options are available: -* **None:** No policy is selected. -* **Daily:** Policy is activated daily. It means an analysis job is scheduled to be executed at the specified time everyday. The scheduled job will scan all the images in Harbor. -![browse project](img/scan_policy.png) - -**NOTES: Once the scheduled job is executed, the completion time of scanning all images will be updated accordingly. Please be aware that the completion time of the images may be different because the execution of analysis for each image may be carried out at different time.** - -### Pull image from Harbor in Kubernetes -Kubernetes users can easily deploy pods with images stored in Harbor. The settings are similar to that of another private registry. There are two major issues: - -1. When your Harbor instance is hosting http and the certificate is self signed. You need to modify daemon.json on each work node of your cluster, for details please refer to: https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry -2. If your pod references an image under private project, you need to create a secret with the credentials of user who has permission to pull image from this project, for details refer to: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ - -## Manage Helm Charts -[Helm](https://helm.sh) is a package manager for [Kubernetes](https://kubernetes.io). Helm uses a packaging format called [charts](https://docs.helm.sh/developing_charts). Since version 1.6.0 Harbor is now a composite cloud-native registry which supports both container image management and Helm charts management. Access to Helm charts in Harbor is controlled by [role-based access controls (RBAC)](https://en.wikipedia.org/wiki/Role-based_access_control) and is restricted by projects. - -### Manage Helm Charts via portal -#### List charts -Click your project to enter the project detail page after successful logging in. The existing helm charts will be listed under the tab `Helm Charts` which is beside the image `Repositories` tab with the following information: -* Name of helm chart -* The status of the chart: Active or Deprecated -* The count of chart versions -* The created time of the chart - -![list charts](img/chartrepo/list_charts.png) - -You can click the icon buttons on the top right to switch views between card view and list view. - -#### Upload new chart -Click the `UPLOAD` button on the top left to open the chart uploading dialog. Choose the uploading chart from your filesystem. Click the `UPLOAD` button to upload it to the chart repository server. - -![upload charts](img/chartrepo/upload_charts.png) - -If the chart is signed, you can choose the corresponding provenance file from your filesystem and Click the `UPLOAD` button to upload them together at once. - -If the chart is successfully uploaded, it will be displayed in the chart list at once. - -#### List chart versions -Clicking the chart name from the chart list will show all the available versions of that chart with the following information: -* the chart version number -* the maintainers of the chart version -* the template engine used (default is gotpl) -* the created timestamp of the chart version - -![list charts versions](img/chartrepo/list_chart_versions.png) - -Obviously, there will be at least 1 version for each of the charts in the top chart list. Same with chart list view, you can also click the icon buttons on the top right to switch views between card view and list view. - -Check the checkbox at the 1st column to select the specified chart versions: -* Click the `DELETE` button to delete all the selected chart versions from the chart repository server. Batch operation is supported. -* Click the `DOWNLOAD` button to download the chart artifact file. Batch operation is not supported. -* Click the `UPLOAD` button to upload the new chart version for the current chart - -#### Adding labels to/remove labels from chart versions -Users who have system administrator, project administrator or project developer role can click the `ADD LABELS` button to add labels to or remove labels from chart versions. - -![add labels to chart versions](img/chartrepo/add_labesl_to_chart_versions.png) - - -#### Filtering chart versions by labels -The chart versions can be filtered by labels: - -![filter chart versions by labels](img/chartrepo/filter_chart_versions_by_label.png) - -#### View chart version details -Clicking the chart version number link will open the chart version details view. You can see more details about the specified chart version here. There are three content sections: -* **Summary:** - * readme of the chart - * overall metadata like home, created timestamp and application version - * related helm commands for reference, such as `helm add repo` and `helm install` etc. -![chart details](img/chartrepo/chart_details.png) -* **Dependencies:** - * list all the dependant sun charts with 'name', 'version' and 'repository' fields -![chart dependencies](img/chartrepo/chart_dependencies.png) -* **Values:** - * display the content from `values.yaml` file with highlight code preview - * clicking the icon buttons on the top right to switch the yaml file view to k-v value pair list view -![chart values](img/chartrepo/chart_values.png) - -Clicking the `DOWNLOAD` button on the top right will start the downloading process. - -### Working with Helm CLI -As a helm chart repository, Harbor can work smoothly with Helm CLI. About how to install Helm CLI, please refer [install helm](https://docs.helm.sh/using_helm/#installing-helm). Run command `helm version` to make sure the version of Helm CLI is v2.9.1+. -``` -helm version - -#Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"} -#Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"} -``` -#### Add harbor to the repository list -Before working, Harbor should be added into the repository list with `helm repo add` command. Two different modes are supported. -* Add Harbor as a unified single index entry point - -With this mode Helm can be made aware of all the charts located in different projects and which are accessible by the currently authenticated user. -``` -helm repo add --ca-file ca.crt --username=admin --password=Passw0rd myrepo https://xx.xx.xx.xx/chartrepo -``` -**NOTES:** Providing both ca file and cert files is caused by an issue from helm. - -* Add Harbor project as separate index entry point - -With this mode, helm can only pull charts in the specified project. -``` -helm repo add --ca-file ca.crt --username=admin --password=Passw0rd myrepo https://xx.xx.xx.xx/chartrepo/myproject -``` - -#### Push charts to the repository server by CLI -As an alternative, you can also upload charts via the CLI. It is not supported by the native helm CLI. A plugin from the community should be installed before pushing. Run `helm plugin install` to install the `push` plugin first. -``` -helm plugin install https://github.com/chartmuseum/helm-push -``` -After a successful installation, run `push` command to upload your charts: -``` -helm push --ca-file=ca.crt --username=admin --password=passw0rd chart_repo/hello-helm-0.1.0.tgz myrepo -``` -**NOTES:** `push` command does not support pushing a prov file of a signed chart yet. - -#### Install charts -Before installing, make sure your helm is correctly initialized with command `helm init` and the chart index is synchronized with command `helm repo update`. - -Search the chart with the keyword if you're not sure where it is: -``` -helm search hello - -#NAME CHART VERSION APP VERSION DESCRIPTION -#local/hello-helm 0.3.10 1.3 A Helm chart for Kubernetes -#myrepo/chart_repo/hello-helm 0.1.10 1.2 A Helm chart for Kubernetes -#myrepo/library/hello-helm 0.3.10 1.3 A Helm chart for Kubernetes -``` -Everything is ready, install the chart to your kubernetes: -``` -helm install --ca-file=ca.crt --username=admin --password=Passw0rd --version 0.1.10 repo248/chart_repo/hello-helm -``` - -For other more helm commands like how to sign a chart, please refer to the [helm doc](https://docs.helm.sh/helm/#helm). - -## Online Garbage Collection -Online Garbage Collection enables user to trigger docker registry garbage collection by clicking button on UI. - -**NOTES:** The space is not freed when the images are deleted from Harbor, Garbage Collection is the task to free up the space by removing blobs from the filesystem when they are no longer referenced by a manifest. - -For more information about Garbage Collection, please see [Garbage Collection](https://github.com/docker/docker.github.io/blob/master/registry/garbage-collection.md). - -### Setting up Garbage Collection -If you are a system admin, you can trigger garbage collection by clicking "GC Now" in the **'Garbage Collection'** tab of **'Configuration'** section under **'Administration'**. - -![browse project](img/gc_now.png) -**NOTES:** Harbor is put into read-only mode when to execute Garbage Collection, and any modification on docker registry is prohibited. - -To avoid frequently triggering the garbage collection process, the availability of the button is restricted. It can be only triggered once in one minute. -![browse project](img/gc_now2.png) - -**Scheduled Garbage Collection by Policy** -* **None:** No policy is selected. -* **Daily:** Policy is activated daily. It means an analysis job is scheduled to be executed at the specified time everyday. The scheduled job will do garbage collection in Harbor. -* **Weekly:** Policy is activated weekly. It means an analysis job is scheduled to be executed at the specified time every week. The scheduled job will do garbage collection in Harbor. -Once the policy has been configured, you have the option to save the schedule. -![browse project](img/gc_policy.png) - -### Garbage Collection history -If you are a system admin, you can view the latest 10 records of garbage collection execution. -![browse project](img/gc_history.png) - -You can click on the 'details' link to view the related logs. -![browse project](img/gc_details.png) - -## Build history - -Build history make it easy to see the contents of a container image, find the code which bulids an image, or locate the image for a source repository. - -In Harbor portal, enter your project, select the repository, click on the link of tag name you'd like to see its build history, the detail page will be opened. Then switch to `Build History` tab, you can see the build history information. - -![build_ history](img/build_history.png) - -## Using OIDC CLI secret - -Having authenticated via OIDC SSO and onboarded to Harbor, you can use Docker/Helm CLI to access Harbor to read/write the artifacts. -As the CLI cannot handle redirection for SSO, we introduced `CLI secret`, which is only available when Harbor's authentication mode -is configured to OIDC based. -After logging into Harbor, click the drop down list to view user's profile: -![user_profile](img/user_profile.png) - -You can copy your CLI secret via the dialog of profile: -![profile_dlg](img/profile_dlg.png) - -After that you can authenticate using your user name in Harbor that you set during onboard process, and CLI secret as the password -with Docker/Helm CLI, for example: -```sh -docker login -u testuser -p xxxxxx jt-test.local.goharbor.io - -``` - -When you click the "..." icon in the profile dialog, a button for generating new CLI secret will appear, and you can generate a new -CLI secret by clicking this button. Please be reminded one user can only have one CLI secret, so when a new secret is generated, the -old one becomes invalid at once. - -**NOTE**: -Under the hood the CLI secret is associated with the ID token, and Harbor will try to refresh the token, so the CLI secret will -be valid after th ID token expires. However, if the OIDC Provider does not provide refresh token or the refresh fails for some -reason, the CLI secret will become invalid. In that case you can logout and login Harbor via SSO flow again so Harbor can get a -new ID token and the CLI secret will work again. - - -## Robot Account -Robot Accounts are accounts created by project admins that are intended for automated operations. They have the following limitations: - -1, Robot Accounts cannot login Harbor portal -2, Robot Accounts can only perform operations by using the Docker and Helm CLIs. - -### Add a Robot Account -If you are a project admin, you can create a Robot Account by clicking "New Robot Account" in the `Robot Accounts` tab of a project, and enter a name, a description, and grant permission to the account to push and pull images and Helm charts. -![add_robot_account](img/robotaccount/add_robot_account.png) - -![add_robot_account](img/robotaccount/add_robot_account_2.png) - -> **NOTE:** The name will become `robot$` and will be used to distinguish a robot account from a normal harbor user. - -![copy_robot_account_token](img/robotaccount/copy_robot_account_token.png) -As Harbor doesn't store your account token, please make sure to copy it in the pop up dialog after creating, otherwise, there is no way to get it from Harbor. - -### Configure duration of robot account -If you are a system admin, you can configure the robot account token duration in days. -![set_robot_account_token_duration](img/robotaccount/set_robot_account_token_duration.png) - -### Authenticate with a robot account -To authenticate with a Robot Account, use `docker login` as below, - -``` -docker login harbor.io -Username: robot$accountname -Password: Thepasswordgeneratedbyprojectadmin -``` - -### Disable a robot account -If you are a project admin, you can disable a Robot Account by clicking "Disable Account" in the `Robot Accounts` tab of a project. -![disable_robot_account](img/robotaccount/disable_delete_robot_account.png) - -### Delete a robot account -If you are a project admin, you can delete a Robot Account by clicking "Delete" in the `Robot Accounts` tab of a project. -![delete_robot_account](img/robotaccount/disable_delete_robot_account.png) - -## API Explorer - -Harbor integrated swagger UI from 1.8. That means all apis can be invoked through UI. Normally, user have 2 ways to navigate to API Explorer. - -1. User can login harbor, and click the "API EXPLORER" button.All apis will be invoked with current user authorization. -![navigation bar](img/api_explorer_btn.png) - - -2. User can navigate to swagger page by ip address by router "devcenter". For example: https://10.192.111.118/devcenter. After go to the page, need to click "authorize" button to give basic authentication to all apis. All apis will be invoked with the authorized user authorization. -![authentication](img/authorize.png) - - +# User Guide +## Overview +This guide walks you through the fundamentals of using Harbor. You'll learn how to use Harbor to: + +* [Manage your projects](#managing-projects) +* [Manage members of a project](#managing-members-of-a-project) +* [Replicate resources between Harbor and non-Harbor registries](#replicating-resources) +* [Retag images within Harbor](#retag-images) +* [Search projects and repositories](#searching-projects-and-repositories) +* [Manage labels](#managing-labels) +* [Configure CVE Whitelists](#configure-cve-whitelists) +* [Set Project Quotas](#set-project-quotas) +* [Manage Harbor system if you are the system administrator:](#administrator-options) + * [Manage users](#managing-user) + * [Manage registries](#managing-registry) + * [Manage replication rules](#managing-replication) + * [Manage authentication](#managing-authentication) + * [Manage project creation](#managing-project-creation) + * [Manage self-registration](#managing-self-registration) + * [Manage email settings](#managing-email-settings) + * [Manage registry read only](#managing-registry-read-only) + * [Manage role by LDAP group](#managing-role-by-ldap-group) +* [Pull and push images using Docker client](#pulling-and-pushing-images-using-docker-client) +* [Add description to repositories](#add-description-to-repositories) +* [Delete repositories and images](#deleting-repositories) +* [Content trust](#content-trust) +* [Vulnerability scanning via Clair](#vulnerability-scanning-via-clair) +* [Pull image from Harbor in Kubernetes](#pull-image-from-harbor-in-kubernetes) +* [Manage Helm Charts](#manage-helm-charts) + * [Manage Helm Charts via portal](#manage-helm-charts-via-portal) + * [Working with Helm CLI](#working-with-helm-cli) +* [Online Garbage Collection](#online-garbage-collection) +* [View build history](#build-history) +* [Using CLI after login via OIDC based SSO](#using-oidc-cli-secret) +* [Manage robot account of a project](#robot-account) +* [Tag Retention Rules](#tag-retention-rules) +* [Webhook Notifications](#webhook-notifications) +* [Using API Explorer](#api-explorer) + +## Role Based Access Control(RBAC) + +![rbac](img/rbac.png) + +Harbor manages images through projects. Users can be added into one project as a member with one of three different roles: + +* **Guest**: Guest has read-only privilege for a specified project. +* **Developer**: Developer has read and write privileges for a project. +* **Master**: Master has elevated permissions beyond those of 'Developer' including the ability to scan images, view replications jobs, and delete images and helm charts. +* **ProjectAdmin**: When creating a new project, you will be assigned the "ProjectAdmin" role to the project. Besides read-write privileges, the "ProjectAdmin" also has some management privileges, such as adding and removing members, starting a vulnerability scan. + +Besides the above three roles, there are two system-level roles: + +* **SysAdmin**: "SysAdmin" has the most privileges. In addition to the privileges mentioned above, "SysAdmin" can also list all projects, set an ordinary user as administrator, delete users and set vulnerability scan policy for all images. The public project "library" is also owned by the administrator. +* **Anonymous**: When a user is not logged in, the user is considered as an "Anonymous" user. An anonymous user has no access to private projects and has read-only access to public projects. + +See detailed permissions matrix listed here: https://github.com/goharbor/harbor/blob/master/docs/permissions.md + +## User account +Harbor supports different authentication modes: + +* **Database(db_auth)** + + Users are stored in the local database. + + A user can register himself/herself in Harbor in this mode. To disable user self-registration, refer to the [installation guide](installation_guide.md) for initial configuration, or disable this feature in [Administrator Options](#administrator-options). When self-registration is disabled, the system administrator can add users into Harbor. + + When registering or adding a new user, the username and email must be unique in the Harbor system. The password must contain at least 8 characters with 1 lowercase letter, 1 uppercase letter and 1 numeric character. + + When you forgot your password, you can follow the below steps to reset the password: + + 1. Click the link "Forgot Password" in the sign in page. + 2. Input the email address entered when you signed up, an email will be sent out to you for password reset. + 3. After receiving the email, click on the link in the email which directs you to a password reset web page. + 4. Input your new password and click "Save". + +* **LDAP/Active Directory (ldap_auth)** + + Under this authentication mode, users whose credentials are stored in an external LDAP or AD server can log in to Harbor directly. + + When an LDAP/AD user logs in by *username* and *password*, Harbor binds to the LDAP/AD server with the **"LDAP Search DN"** and **"LDAP Search Password"** described in [installation guide](installation_guide.md). If it succeeded, Harbor looks up the user under the LDAP entry **"LDAP Base DN"** including substree. The attribute (such as uid, cn) specified by **"LDAP UID"** is used to match a user with the *username*. If a match is found, the user's *password* is verified by a bind request to the LDAP/AD server. Uncheck **"LDAP Verify Cert"** if the LDAP/AD server uses a self-signed or an untrusted certificate. + + Self-registration, deleting user, changing password and resetting password are not supported under LDAP/AD authentication mode because the users are managed by LDAP or AD. + +* **OIDC Provider (oidc_auth)** + + With this authentication mode, regular user will login to Harbor Portal via SSO flow. + After the system administrator configure Harbor to authenticate via OIDC (more details refer to [this section](#managing-authentication)), + a button `LOGIN VIA OIDC PROVIDER` will appear on the login page. + ![oidc_login](img/oidc_login.png) + + By clicking this button user will kick off the SSO flow and be redirected to the OIDC Provider for authentication. After a successful + authentication at the remote site, user will be redirected to Harbor. There will be an "onboard" step if it's the first time the user + authenticate using his account, in which there will be a dialog popped up for him to set his user name in Harbor: + ![oidc_onboar](img/oidc_onboard_dlg.png) + + This user name will be the identifier for this user in Harbor, which will be used in the cases such as adding member to a project, assigning roles, etc. + This has to be a unique user name, if another user has used this user name to onboard, user will be prompted to choose another one. + + Regarding this user to use docker CLI, please refer to [Using CLI after login via OIDC based SSO](#using-oidc-cli-secret) + + **NOTE:** + 1. After the onboard process, you still have to login to Harbor via SSO flow, the `Username` and `Password` fields are only for + local admin to login when Harbor is configured authentication via OIDC. + 2. Similar to LDAP authentication mode, self-registration, updating profile, deleting user, changing password and + resetting password are not supported. + + +## Managing projects +A project in Harbor contains all repositories of an application. No images can be pushed to Harbor before the project is created. RBAC is applied to a project. There are two types of projects in Harbor: + +* **Public**: All users have the read privilege to a public project, it's convenient for you to share some repositories with others in this way. +* **Private**: A private project can only be accessed by users with proper privileges. + +You can create a project after you signed in. Check on the "Access Level" checkbox will make this project public. + +![create project](img/new_create_project.png) + +After the project is created, you can browse repositories, members, logs, replication and configuration using the navigation tab. + +![browse project](img/new_browse_project.png) + +There are two views to show repositories, list view and card view, you can switch between them by clicking the corresponding icon. + +![browse repositories](img/browse_project_repositories.png) + +All logs can be listed by clicking "Logs". You can apply a filter by username, or operations and dates under "Advanced Search". + +![browse project](img/log_search_advanced.png) + +![browse project](img/new_project_log.png) + +Project properties can be changed by clicking "Configuration". + +* To make all repositories under the project accessible to everyone, select the `Public` checkbox. + +* To prevent un-signed images under the project from being pulled, select the `Enable content trust` checkbox. + +* To prevent vulnerable images under the project from being pulled, select the `Prevent vulnerable images from running` checkbox and change the severity level of vulnerabilities. Images cannot be pulled if their level equals to or higher than the currently selected level. + +* To activate an immediate vulnerability scan on new images that are pushed to the project, select the `Automatically scan images on push` checkbox. + +![browse project](img/project_configuration.png) + +## Managing members of a project +### Adding members +You can add members with different roles to an existing project. You can add a LDAP/AD user to project members under LDAP/AD authentication mode. + +![browse project](img/new_add_member.png) + +### Updating and removing members +You can check one or more members, then click `ACTION`, choose one role to batch switch checked members' roles or remove them from the project. + +![browse project](img/new_remove_update_member.png) + +## Replicating resources +Replication allows users to replicate resources (images/charts) between Harbor and non-Harbor registries in both pull or push mode. + +Once the system administrator has set a rule, all resources that match the defined [filter](#resource-filter) patterns will be replicated to the destination registry when the [triggering condition](#trigger-mode) is matched. Each resource will start a task to run. If the namespace does not exist on the destination registry, a new namespace will be created automatically. If it already exists and the user configured in the policy has no write privilege to it, the process will fail. The member information will not be replicated. + +There may be a bit of delay during replication based on the situation of the network. If a replication task fails, it will be re-scheduled a few minutes later and retried times. + +**Note:** Due to API changes, replication between different versions of Harbor is not supported. + +### Creating replication endpoints + +To replicate image repositories from one instance of Harbor to another Harbor or non-Harbor registry, you first create replication endpoints. + +1. Go to **Registries** and click the **+ New Endpoint** button. + + ![New replication endpoint](img/replication-endpoint1.png) +1. For **Provider**, use the drop-down menu to select the type of registry to set up as a replication endpoint. + + The endpoint can be another Harbor instance, or a non-Harbor registry. Currently, the following non-Harbor registries are supported: + + - Docker Hub + - Docker registry + - AWS Elastic Container Registry + - Azure Container Registry + - Ali Cloud Container Registry + - Google Container Registry + - Huawei SWR + - Helm Hub + + ![Replication providers](img/replication-endpoint2.png) + +1. Enter a suitable name and description for the new replication endpoint. +1. Enter the full URL of the registry to set up as a replication endpoint. + + For example, to replicate to another Harbor instance, enter https://harbor_instance_address:443. The registry must exist and be running before you create the endpoint. +1. Enter the Access ID and Access Secret for the endpoint registry instance. + + Use an account that has the appropriate privileges on that registry, or an account that has write permission on the corresponding project in a Harbor registry. + + **NOTES**: + - AWS ECR adapters should use access keys, not a username and password. The access key should have sufficient permissions, such as storage permission. + - Google GCR adapters should use the entire JSON key generated in the service account. The namespace should start with the project ID. +1. Optionally, select the **Verify Remote Cert** check box. + + Deselect the check box if the remote registry uses a self-signed or untrusted certificate. +1. Click **Test Connection**. +1. When you have successfully tested the connection, click **OK**. + +### Creating a replication rule +Login as a system administrator user, click `NEW REPLICATION RULE` under `Administration->Replications` and fill in the necessary fields. You can choose different replication modes, [resource filters](#resource-filter) and [trigger modes](#trigger-mode) according to the different requirements. If there is no endpoint available in the list, follow the instructions in the [Creating replication endpoints](#creating-replication-endpoints) to create one. Click `SAVE` to create a replication rule. + +![browse project](img/create_rule.png) + +#### Resource filter +Three resource filters are supported: +* **Name**: Filter resources according to the name. +* **Tag**: Filter resources according to the tag. +* **Resource**: Filter images according to the resource type. + +The terms supported in the pattern used by name filter and tag filter are as follows: +* **\***: Matches any sequence of non-separator characters `/`. +* **\*\***: Matches any sequence of characters, including path separators `/`. +* **?**: Matches any single non-separator character `/`. +* **{alt1,...}**: Matches a sequence of characters if one of the comma-separated alternatives matches. + +**Note:** `library` must be added if you want to replicate the official images of Docker Hub. For example, `library/hello-world` matches the official hello-world images. + +Pattern | String(Match or not) +---------- | ------- +`library/*` | `library/hello-world`(Y)
    `library/my/hello-world`(N) +`library/**` | `library/hello-world`(Y)
    `library/my/hello-world`(Y) +`{library,goharbor}/**` | `library/hello-world`(Y)
    `goharbor/harbor-core`(Y)
    `google/hello-world`(N) +`1.?` | `1.0`(Y)
    `1.01`(N) + +#### Trigger mode +* **Manual**: Replicate the resources manually when needed. **Note**: The deletion operations are not replicated. +* **Scheduled**: Replicate the resources periodically. **Note**: The deletion operations are not replicated. +* **Event Based**: When a new resource is pushed to the project, it is replicated to the remote registry immediately. Same to the deletion operation if the `Delete remote resources when locally deleted` checkbox is selected. + +### Starting a replication manually +Select a replication rule and click `REPLICATE`, the resources which the rule is applied to will be replicated from the source registry to the destination immediately. + +![browse project](img/start_replicate.png) + +### Listing and stopping replication executions +Click a rule, the execution records which belong to this rule will be listed. Each record represents the summary of one execution of the rule. Click `STOP` to stop the executions which are in progress. + +![browse project](img/list_stop_executions.png) + +### Listing tasks +Click the ID of one execution, you can get the execution summary and the task list. Click the log icon can get the detail information for the replication progress. +**Note**: The count of `IN PROGRESS` status in the summary includes both `Pending` and `In Progress` tasks. + +![browse project](img/list_tasks.png) + +### Deleting the replication rule +Select the replication rule and click `DELETE` to delete it. Only rules which have no in progress executions can be deleted. + +![browse project](img/delete_rule.png) + +## Retag Images + +Images retag helps users to tag images in Harbor, images can be tagged to different repositories and projects, as long as the users have sufficient permissions. For example, + +``` +release/app:stg --> release/app:prd +develop/app:v1.0 --> release/app:v1.0 +``` +To retag an image, users should have read permission (guest role or above) to the source project and write permission (developer role or above) to the target project. + +In Harbor portal, select the image you'd like to retag, and click the enabled `Retag` button to open the retag dialog. + +![retag image](img/retag_image.png) + +In the retag dialog, project name, repository name and the new tag should be specified. On click the `CONFIRM` button, the new tag would be created instantly. You can check the new tag in the corresponding project. + +## Searching projects and repositories +Entering a keyword in the search field at the top lists all matching projects and repositories. The search result includes both public and private repositories you have access to. + +![browse project](img/new_search.png) + +## Managing labels +Harbor provides two kinds of labels to isolate kinds of resources(only images for now): +* **Global Level Label**: Managed by system administrators and used to manage the images of the whole system. They can be added to images under any projects. +* **Project Level Label**: Managed by project administrators under a project and can only be added to the images of the project. + +### Managing global level labels +The system administrators can list, create, update and delete the global level labels under `Administration->Configuration->Labels`: + +![manage global level labels](img/manage_global_level_labels.png) + +### Managing project level labels +The project administrators and system administrators can list, create, update and delete the project level labels under `Labels` tab of the project detail page: + +![manage project level labels](img/manage_project_level_labels.png) + +### Adding labels to/remove labels from images +Users who have system administrator, project administrator or project developer role can click the `ADD LABELS` button to add labels to or remove labels from images. The label list contains both globel level labels(come first) and project level labels: + +![add labels to images](img/add_labels_to_images.png) + +### Filtering images by labels +The images can be filtered by labels: + +![filter images by labels](img/filter_images_by_label.png) + +## Configure CVE Whitelists + +When you run vulnerability scans, images that are subject to Common Vulnerabilities and Exposures (CVE) are identified. According to the severity of the CVE and your security settings, these images might not be permitted to run. As a system administrator, you can create whitelists of CVEs to ignore during vulnerability scanning. + +You can set a system-wide CVE whitelist or you can set CVE whitelists on a per-project basis. + +### Configure a System-Wide CVE Whitelist + +System-wide CVE whitelists apply to all of the projects in a Harbor instance. + +1. Go to **Configuration** > **System Settings**. +1. Under **Deployment security**, click **Add**. + ![System-wide CVE whitelist](img/cve-whitelist1.png) +1. Enter the list of CVE IDs to ignore during vulnerability scanning. + ![Add system CVE whitelist](img/cve-whitelist2.png) + + Either use a comma-separated list or newlines to add multiple CVE IDs to the list. +1. Click **Add** at the bottom of the window to add the list. +1. Optionally uncheck the **Never expires** checkbox and use the calendar selector to set an expiry date for the whitelist. + ![Add system CVEs](img/cve-whitelist3.png) +1. Click **Save** at the bottom of the page to save your settings. + +After you have created a system whitelist, you can remove CVE IDs from the list by clicking the delete button next to it in the list. You can click **Add** to add more CVE IDs to the system whitelist. + +![Add and remove system CVEs](img/cve-whitelist4.png) + +### Configure a Per-Project CVE Whitelist + +By default, the system whitelist is applied to all projects. You can configure different CVE whitelists for individual projects, that override the system whitelist. + +1. Go to **Projects**, select a project, and select **Configuration**. +1. Under **CVE whitelist**, select **Project whitelist**. + ![Project CVE whitelist](img/cve-whitelist5.png) +1. Optionally click **Copy From System** to add all of the CVE IDs from the system CVE whitelist to this project whitelist. +1. Click **Add** and enter a list of additional CVE IDs to ignore during vulnerability scanning of this project. + ![Add project CVEs](img/cve-whitelist6.png) + + Either use a comma-separated list or newlines to add multiple CVE IDs to the list. +1. Click **Add** at the bottom of the window to add the CVEs to the project whitelist. +1. Optionally uncheck the **Never expires** checkbox and use the calendar selector to set an expiry date for the whitelist. +1. Click **Save** at the bottom of the page to save your settings. + +After you have created a project whitelist, you can remove CVE IDs from the list by clicking the delete button next to it in the list. You can click **Add** at any time to add more CVE IDs to the whitelist for this project. + +If CVEs are added to the system whitelist after you have created a project whitelist, click **Copy From System** to add the new entries from the system whitelist to the project whitelist. + +**NOTE**: If CVEs are deleted from the system whitelist after you have created a project whitelist, and if you added the system whitelist to the project whitelist, you must manually remove the deleted CVEs from the project whitelist. If you click **Copy From System** after CVEs have been deleted from the system whitelist, the deleted CVEs are not automatically removed from the project whitelist. + +## Set Project Quotas + +To exercise control over resource use, as a system administrator you can set quotas on projects. You can limit the number of tags that a project can contain and limit the amount of storage capacity that a project can consume. You can set default quotas that apply to all projects globally. + +**NOTE**: Default quotas apply to projects that are created after you set or change the default quota. The default quota is not applied to projects that already existed before you set it. + +You can also set quotas on individual projects. If you set a global default quota and you set different quotas on individual projects, the per-project quotas are applied. + +By default, all projects have unlimited quotas for both tags and storage use. + +1. Go to **Configuration** > **Project Quotas**. + ![Project quotas](img/project-quota1.png) +1. To set global default quotas on all projects, click **Edit**. + ![Project quotas](img/project-quota2.png) + 1. For **Default artifact count**, enter the maximum number of tags that any project can contain. + + Enter `-1` to set the default to unlimited. + 1. For **Default storage consumption**, enter the maximum quantity of storage that any project can consume, selecting `MB`, `GB`, or `TB` from the drop-down menu. + + Enter `-1` to set the default to unlimited. + ![Project quotas](img/project-quota3.png) + 1. Click **OK**. +1. To set quotas on an individual project, click the 3 vertical dots next to a project and select **Edit**. + ![Project quotas](img/project-quota4.png) + 1. For **Default artifact count**, enter the maximum number of tags that this individual project can contain, or enter `-1` to set the default to unlimited. + 1. For **Default storage consumption**, enter the maximum quantity of storage that this individual project can consume, selecting `MB`, `GB`, or `TB` from the drop-down menu. + +After you set quotas, the you can see how much of their quotas each project has consumed in the **Project Quotas** tab. + +![Project quotas](img/project-quota5.png) + +### How Harbor Calculates Resource Usage + +When setting project quotas, it is useful to know how Harbor calculates tag numbers and storage use, especially in relation to image pushing, retagging, and garbage collection. + +- Harbor computes image size when blobs and manifests are pushed from the Docker client. +- Harbor computes tag counts when manifests are pushed from the Docker client. + + **NOTE**: When users push an image, the manifest is pushed last, after all of the associated blobs have been pushed successfully to the registry. If several images are pushed concurrently and if there is an insufficient number of tags left in the quota for all of them, images are accepted in the order that their manifests arrive. Consequently, an attempt to push an image might not be immediately rejected for exceeding the quota. This is because there was availability in the tag quota when the push was initiated, but by the time the manifest arrived the quota had been exhausted. +- Shared blobs are only computed once per project. In Docker, blob sharing is defined globally. In Harbor, blob sharing is defined at the project level. As a consequence, overall storage usage can be greater than the actual disk capacity. +- Retagging images reserves and releases resources: + - If you retag an image within a project, the tag count increases by one, but storage usage does not change because there are no new blobs or manifests. + - If you retag an image from one project to another, the tag count and storage usage both increase. +- During garbage collection, Harbor frees the storage used by untagged blobs in the project. +- If the tag count reaches the limit, image blobs can be pushed into a project and storage usage is updated accordingly. You can consider these blobs to be untagged blobs. They can be removed by garbage collection, and the storage that they consume is returned after garbage colletion. +- Helm chart size is not calculated. Only tag counts are calculated. + +## Administrator options +### Managing user +Administrator can add "Administrator" role to one or more ordinary users by checking checkboxes and clicking `SET AS ADMINISTRATOR`. To delete users, checked checkboxes and select `DELETE`. Deleting user is only supported under database authentication mode. + +![browse project](img/new_set_admin_remove_user.png) + +### Managing registry +You can list, add, edit and delete registries under `Administration->Registries`. Only registries which are not referenced by any rules can be deleted. + +![browse project](img/manage_registry.png) + +### Managing replication +You can list, add, edit and delete rules under `Administration->Replications`. + +![browse project](img/manage_replication.png) + +### Managing authentication +You can change authentication mode between **Database**(default) and **LDAP** before any user is added, when there is at least one user(besides admin) in Harbor, you cannot change the authentication mode. +![browse project](img/new_auth.png) +When using LDAP mode, user's self-registration is disabled. The parameters of LDAP server must be filled in. For more information, refer to [User account](#user-account). +![browse project](img/ldap_auth.png) + +When using OIDC mode, user will login Harbor via OIDC based SSO. A client has to be registered on the OIDC provider and Harbor's callback URI needs to be associated to that client as a redirectURI. +![OIDC settings](img/oidc_auth_setting.png) + +The settings of this auth mode: +* OIDC Provider Name: The name of the OIDC Provider. +* OIDC Provider Endpoint: The URL of the endpoint of the OIDC provider(a.k.a the Authorization Server in OAuth's terminology), +which must service the "well-known" URI for its configuration, more details please refer to https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationRequest +* OIDC Client ID: The ID of client configured on OIDC Provider. +* OIDC Client Secret: The secret for this client. +* OIDC Scope: The scope values to be used during the authentication. It is the comma separated string, which must contain `openid`. +Normally it should also contain `profile` and `email`. For getting the refresh token it should also contain `offline_access`. Please check with the administrator of the OIDC Provider. +* Verify Certificate: Whether to check the certificate when accessing the OIDC Provider. if you are running the OIDC Provider with self-signed +certificate, make sure this value is set to false. + + +### Managing project creation +Use the **Project Creation** drop-down menu to set which users can create projects. Select **Everyone** to allow all users to create projects. Select **Admin Only** to allow only users with the Administrator role to create projects. +![browse project](img/new_proj_create.png) + +### Managing self-registration +You can manage whether a user can sign up for a new account. This option is not available if you use LDAP authentication. +![browse project](img/new_self_reg.png) + +### Managing email settings +You can change Harbor's email settings, the mail server is used to send out responses to users who request to reset their password. +![browse project](img/new_config_email.png) + +### Managing registry read only +You can change Harbor's registry read only settings, read only mode will allow 'docker pull' while preventing 'docker push' and the deletion of repository and tag. +![browse project](img/read_only.png) + +If it set to true, deleting repository, tag and pushing image will be disabled. +![browse project](img/read_only_enable.png) + + +``` +$ docker push 10.117.169.182/demo/ubuntu:14.04 +The push refers to a repository [10.117.169.182/demo/ubuntu] +0271b8eebde3: Preparing +denied: The system is in read only mode. Any modification is prohibited. +``` +### Managing role by LDAP group + +If auth_mode is ldap_auth, you can manage project role by LDAP/AD group. please refer [manage role by ldap group guide](manage_role_by_ldap_group.md). + +## Pulling and pushing images using Docker client + +**NOTE: Harbor only supports Registry V2 API. You need to use Docker client 1.6.0 or higher.** + +Harbor supports HTTP by default and Docker client tries to connect to Harbor using HTTPS first, so if you encounter an error as below when you pull or push images, you need to configure insecure registry. Please, read [this document](https://docs.docker.com/registry/insecure/) in order to understand how to do this. + +```Error response from daemon: Get https://myregistrydomain.com/v1/users/: dial tcp myregistrydomain.com:443 getsockopt: connection refused.``` + +If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add +`--insecure-registry myregistrydomain.com` to the daemon's start up arguments. + +In the case of HTTPS, if you have access to the registry's CA certificate, simply place the CA certificate at /etc/docker/certs.d/myregistrydomain.com/ca.crt . + +### Pulling images +If the project that the image belongs to is private, you should sign in first: + +```sh +$ docker login 10.117.169.182 +``` + +You can now pull the image: + +```sh +$ docker pull 10.117.169.182/library/ubuntu:14.04 +``` + +**Note: Replace "10.117.169.182" with the IP address or domain name of your Harbor node. You cannot pull a unsigned image if you enabled content trust.** + +### Pushing images +Before pushing an image, you must create a corresponding project on Harbor web UI. + +First, log in from Docker client: + +```sh +$ docker login 10.117.169.182 +``` + +Tag the image: + +```sh +$ docker tag ubuntu:14.04 10.117.169.182/demo/ubuntu:14.04 +``` + +Push the image: + +```sh +$ docker push 10.117.169.182/demo/ubuntu:14.04 +``` + +**Note: Replace "10.117.169.182" with the IP address or domain name of your Harbor node.** + +### Add description to repositories + +After pushing an image, an Information can be added by project admin to describe this repository. + +Go into the repository and select the "Info" tab, and click the "EDIT" button. An textarea will appear and enter description here. Click "SAVE" button to save this information. + +![edit info](img/edit_description.png) + +### Download the harbor certs + +Users can click the "registry certificate" link to download the registry certificate. + +![browse project](img/download_harbor_certs.png) + +### Deleting repositories + +Repository deletion runs in two steps. + +First, delete a repository in Harbor's UI. This is soft deletion. You can delete the entire repository or just a tag of it. After the soft deletion, +the repository is no longer managed in Harbor, however, the files of the repository still remain in Harbor's storage. + +![browse project](img/new_delete_repo.png) +![browse project](img/new_delete_tag.png) + +**CAUTION: If both tag A and tag B refer to the same image, after deleting tag A, B will also get deleted. if you enabled content trust, you need to use notary command line tool to delete the tag's signature before you delete an image.** + +Next, delete the actual files of the repository using the [garbage collection](#online-garbage-collection) in Harbor's UI. + +### Content trust +**NOTE: Notary is an optional component, please make sure you have already installed it in your Harbor instance before you go through this section.** +If you want to enable content trust to ensure that images are signed, please set two environment variables in the command line before pushing or pulling any image: +```sh +export DOCKER_CONTENT_TRUST=1 +export DOCKER_CONTENT_TRUST_SERVER=https://10.117.169.182:4443 +``` +If you push the image for the first time, You will be asked to enter the root key passphrase. This will be needed every time you push a new image while the ``DOCKER_CONTENT_TRUST`` flag is set. +The root key is generated at: ``/root/.docker/trust/private/root_keys`` +You will also be asked to enter a new passphrase for the image. This is generated at ``/root/.docker/trust/private/tuf_keys/[registry name] /[imagepath]``. +If you are using a self-signed cert, make sure to copy the CA cert into ```/etc/docker/certs.d/10.117.169.182``` and ```$HOME/.docker/tls/10.117.169.182:4443/```. When an image is signed, it is indicated in the Web UI. +**Note: Replace "10.117.169.182" with the IP address or domain name of your Harbor node. In order to use content trust, HTTPS must be enabled in Harbor.** + + +When an image is signed, it has a tick shown in UI; otherwise, a cross sign(X) is displayed instead. +![browse project](img/content_trust.png) + +### Vulnerability scanning via Clair +**CAUTION: Clair is an optional component, please make sure you have already installed it in your Harbor instance before you go through this section.** + +Static analysis of vulnerabilities is provided through open source project [Clair](https://github.com/coreos/clair). You can initiate scanning on a particular image, or on all images in Harbor. Additionally, you can also set a policy to scan all the images at a specified time everyday. + +**Vulnerability metadata** + +Clair depends on the vulnerability metadata to complete the analysis process. After the first initial installation, Clair will automatically start to update the metadata database from different vulnerability repositories. The updating process may take a while based on the data size and network connection. If the database has not been fully populated, there is a warning message at the footer of the repository datagrid view. +![browse project](img/clair_not_ready.png) + +The 'database not fully ready' warning message is also displayed in the **'Vulnerability'** tab of **'Configuration'** section under **'Administration'** for your awareness. +![browse project](img/clair_not_ready2.png) + +Once the database is ready, an overall database updated timestamp will be shown in the **'Vulnerability'** tab of **'Configuration'** section under **'Administration'**. +![browse project](img/clair_ready.png) + +**Scanning an image** + +Enter your project, select the repository. For each tag there will be an 'Vulnerability' column to display vulnerability scanning status and related information. You can select the image and click the "SCAN" button to trigger the vulnerability scan process. +![browse project](img/scan_image.png) +**NOTES: Only the users with 'Project Admin' role have the privilege to launch the analysis process.** + +The analysis process may have the following status that are indicated in the 'Vulnerability' column: +* **Not Scanned:** The tag has never been scanned. +* **Queued:** The scanning task is scheduled but not executed yet. +* **Scanning:** The scanning process is in progress. +* **Error:** The scanning process failed to complete. +* **Complete:** The scanning process was successfully completed. + +For the **'Not Scanned'** and **'Queued'** statuses, a text label with status information is shown. For the **'Scanning'**, a progress bar will be displayed. +If an error occurred, you can click on the **'View Log'** link to view the related logs. +![browse project](img/log_viewer.png) + +If the process was successfully completed, a result bar is created. The width of the different colored sections indicates the percentage of features with vulnerabilities for a particular severity level. +* **Red:** **High** level of vulnerabilities +* **Orange:** **Medium** level of vulnerabilities +* **Yellow:** **Low** level of vulnerabilities +* **Grey:** **Unknown** level of vulnerabilities +* **Green:** **No** vulnerabilities +![browse project](img/bar_chart.png) + +Move the cursor over the bar, a tooltip with summary report will be displayed. Besides showing the total number of features with vulnerabilities and the total number of features in the scanned image tag, the report also lists the counts of features with vulnerabilities of different severity levels. The completion time of the last analysis process is shown at the bottom of the tooltip. +![browse project](img/summary_tooltip.png) + +Click on the tag name link, the detail page will be opened. Besides the information about the tag, all the vulnerabilities found in the last analysis process will be listed with the related information. You can order or filter the list by columns. +![browse project](img/tag_detail.png) + +**NOTES: You can initiate the vulnerability analysis for a tag at anytime you want as long as the status is not 'Queued' or 'Scanning'.** + +**Scanning all images** + +In the **'Vulnerability'** tab of **'Configuration'** section under **'Administration'**, click on the **'SCAN NOW'** button to start the analysis process for all the existing images. + +**NOTES: The scanning process is executed via multiple concurrent asynchronous tasks. There is no guarantee on the order of scanning or the returned results.** +![browse project](img/scan_all.png) + +To avoid frequently triggering the resource intensive scanning process, the availability of the button is restricted. It can be only triggered once in a predefined period. The next available time will be displayed besides the button. +![browse project](img/scan_all2.png) + +**Scheduled Scan by Policy** + +You can set policies to control the vulnerability analysis process. Currently, two options are available: +* **None:** No policy is selected. +* **Daily:** Policy is activated daily. It means an analysis job is scheduled to be executed at the specified time everyday. The scheduled job will scan all the images in Harbor. +![browse project](img/scan_policy.png) + +**NOTES: Once the scheduled job is executed, the completion time of scanning all images will be updated accordingly. Please be aware that the completion time of the images may be different because the execution of analysis for each image may be carried out at different time.** + +### Pull image from Harbor in Kubernetes +Kubernetes users can easily deploy pods with images stored in Harbor. The settings are similar to that of another private registry. There are two major issues: + +1. When your Harbor instance is hosting http and the certificate is self signed. You need to modify daemon.json on each work node of your cluster, for details please refer to: https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry +2. If your pod references an image under private project, you need to create a secret with the credentials of user who has permission to pull image from this project, for details refer to: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + +## Manage Helm Charts +[Helm](https://helm.sh) is a package manager for [Kubernetes](https://kubernetes.io). Helm uses a packaging format called [charts](https://docs.helm.sh/developing_charts). Since version 1.6.0 Harbor is now a composite cloud-native registry which supports both container image management and Helm charts management. Access to Helm charts in Harbor is controlled by [role-based access controls (RBAC)](https://en.wikipedia.org/wiki/Role-based_access_control) and is restricted by projects. + +### Manage Helm Charts via portal +#### List charts +Click your project to enter the project detail page after successful logging in. The existing helm charts will be listed under the tab `Helm Charts` which is beside the image `Repositories` tab with the following information: +* Name of helm chart +* The status of the chart: Active or Deprecated +* The count of chart versions +* The created time of the chart + +![list charts](img/chartrepo/list_charts.png) + +You can click the icon buttons on the top right to switch views between card view and list view. + +#### Upload new chart +Click the `UPLOAD` button on the top left to open the chart uploading dialog. Choose the uploading chart from your filesystem. Click the `UPLOAD` button to upload it to the chart repository server. + +![upload charts](img/chartrepo/upload_charts.png) + +If the chart is signed, you can choose the corresponding provenance file from your filesystem and Click the `UPLOAD` button to upload them together at once. + +If the chart is successfully uploaded, it will be displayed in the chart list at once. + +#### List chart versions +Clicking the chart name from the chart list will show all the available versions of that chart with the following information: +* the chart version number +* the maintainers of the chart version +* the template engine used (default is gotpl) +* the created timestamp of the chart version + +![list charts versions](img/chartrepo/list_chart_versions.png) + +Obviously, there will be at least 1 version for each of the charts in the top chart list. Same with chart list view, you can also click the icon buttons on the top right to switch views between card view and list view. + +Check the checkbox at the 1st column to select the specified chart versions: +* Click the `DELETE` button to delete all the selected chart versions from the chart repository server. Batch operation is supported. +* Click the `DOWNLOAD` button to download the chart artifact file. Batch operation is not supported. +* Click the `UPLOAD` button to upload the new chart version for the current chart + +#### Adding labels to/remove labels from chart versions +Users who have system administrator, project administrator or project developer role can click the `ADD LABELS` button to add labels to or remove labels from chart versions. + +![add labels to chart versions](img/chartrepo/add_labesl_to_chart_versions.png) + + +#### Filtering chart versions by labels +The chart versions can be filtered by labels: + +![filter chart versions by labels](img/chartrepo/filter_chart_versions_by_label.png) + +#### View chart version details +Clicking the chart version number link will open the chart version details view. You can see more details about the specified chart version here. There are three content sections: +* **Summary:** + * readme of the chart + * overall metadata like home, created timestamp and application version + * related helm commands for reference, such as `helm add repo` and `helm install` etc. +![chart details](img/chartrepo/chart_details.png) +* **Dependencies:** + * list all the dependant sun charts with 'name', 'version' and 'repository' fields +![chart dependencies](img/chartrepo/chart_dependencies.png) +* **Values:** + * display the content from `values.yaml` file with highlight code preview + * clicking the icon buttons on the top right to switch the yaml file view to k-v value pair list view +![chart values](img/chartrepo/chart_values.png) + +Clicking the `DOWNLOAD` button on the top right will start the downloading process. + +### Working with Helm CLI +As a helm chart repository, Harbor can work smoothly with Helm CLI. About how to install Helm CLI, please refer [install helm](https://docs.helm.sh/using_helm/#installing-helm). Run command `helm version` to make sure the version of Helm CLI is v2.9.1+. +``` +helm version + +#Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"} +#Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"} +``` +#### Add harbor to the repository list +Before working, Harbor should be added into the repository list with `helm repo add` command. Two different modes are supported. +* Add Harbor as a unified single index entry point + +With this mode Helm can be made aware of all the charts located in different projects and which are accessible by the currently authenticated user. +``` +helm repo add --ca-file ca.crt --username=admin --password=Passw0rd myrepo https://xx.xx.xx.xx/chartrepo +``` +**NOTES:** Providing both ca file and cert files is caused by an issue from helm. + +* Add Harbor project as separate index entry point + +With this mode, helm can only pull charts in the specified project. +``` +helm repo add --ca-file ca.crt --username=admin --password=Passw0rd myrepo https://xx.xx.xx.xx/chartrepo/myproject +``` + +#### Push charts to the repository server by CLI +As an alternative, you can also upload charts via the CLI. It is not supported by the native helm CLI. A plugin from the community should be installed before pushing. Run `helm plugin install` to install the `push` plugin first. +``` +helm plugin install https://github.com/chartmuseum/helm-push +``` +After a successful installation, run `push` command to upload your charts: +``` +helm push --ca-file=ca.crt --username=admin --password=passw0rd chart_repo/hello-helm-0.1.0.tgz myrepo +``` +**NOTES:** `push` command does not support pushing a prov file of a signed chart yet. + +#### Install charts +Before installing, make sure your helm is correctly initialized with command `helm init` and the chart index is synchronized with command `helm repo update`. + +Search the chart with the keyword if you're not sure where it is: +``` +helm search hello + +#NAME CHART VERSION APP VERSION DESCRIPTION +#local/hello-helm 0.3.10 1.3 A Helm chart for Kubernetes +#myrepo/chart_repo/hello-helm 0.1.10 1.2 A Helm chart for Kubernetes +#myrepo/library/hello-helm 0.3.10 1.3 A Helm chart for Kubernetes +``` +Everything is ready, install the chart to your kubernetes: +``` +helm install --ca-file=ca.crt --username=admin --password=Passw0rd --version 0.1.10 repo248/chart_repo/hello-helm +``` + +For other more helm commands like how to sign a chart, please refer to the [helm doc](https://docs.helm.sh/helm/#helm). + +## Online Garbage Collection +Online Garbage Collection enables user to trigger docker registry garbage collection by clicking button on UI. + +**NOTES:** The space is not freed when the images are deleted from Harbor, Garbage Collection is the task to free up the space by removing blobs from the filesystem when they are no longer referenced by a manifest. + +For more information about Garbage Collection, please see [Garbage Collection](https://github.com/docker/docker.github.io/blob/master/registry/garbage-collection.md). + +### Setting up Garbage Collection +If you are a system admin, you can trigger garbage collection by clicking "GC Now" in the **'Garbage Collection'** tab of **'Configuration'** section under **'Administration'**. + +![browse project](img/gc_now.png) +**NOTES:** Harbor is put into read-only mode when to execute Garbage Collection, and any modification on docker registry is prohibited. + +To avoid frequently triggering the garbage collection process, the availability of the button is restricted. It can be only triggered once in one minute. +![browse project](img/gc_now2.png) + +**Scheduled Garbage Collection by Policy** +* **None:** No policy is selected. +* **Daily:** Policy is activated daily. It means an analysis job is scheduled to be executed at the specified time everyday. The scheduled job will do garbage collection in Harbor. +* **Weekly:** Policy is activated weekly. It means an analysis job is scheduled to be executed at the specified time every week. The scheduled job will do garbage collection in Harbor. +Once the policy has been configured, you have the option to save the schedule. +![browse project](img/gc_policy.png) + +### Garbage Collection history +If you are a system admin, you can view the latest 10 records of garbage collection execution. +![browse project](img/gc_history.png) + +You can click on the 'details' link to view the related logs. +![browse project](img/gc_details.png) + +## Build history + +Build history make it easy to see the contents of a container image, find the code which bulids an image, or locate the image for a source repository. + +In Harbor portal, enter your project, select the repository, click on the link of tag name you'd like to see its build history, the detail page will be opened. Then switch to `Build History` tab, you can see the build history information. + +![build_ history](img/build_history.png) + +## Using OIDC CLI secret + +Having authenticated via OIDC SSO and onboarded to Harbor, you can use Docker/Helm CLI to access Harbor to read/write the artifacts. +As the CLI cannot handle redirection for SSO, we introduced `CLI secret`, which is only available when Harbor's authentication mode +is configured to OIDC based. +After logging into Harbor, click the drop down list to view user's profile: +![user_profile](img/user_profile.png) + +You can copy your CLI secret via the dialog of profile: +![profile_dlg](img/profile_dlg.png) + +After that you can authenticate using your user name in Harbor that you set during onboard process, and CLI secret as the password +with Docker/Helm CLI, for example: +```sh +docker login -u testuser -p xxxxxx jt-test.local.goharbor.io + +``` + +When you click the "..." icon in the profile dialog, a button for generating new CLI secret will appear, and you can generate a new +CLI secret by clicking this button. Please be reminded one user can only have one CLI secret, so when a new secret is generated, the +old one becomes invalid at once. + +**NOTE**: +Under the hood the CLI secret is associated with the ID token, and Harbor will try to refresh the token, so the CLI secret will +be valid after th ID token expires. However, if the OIDC Provider does not provide refresh token or the refresh fails for some +reason, the CLI secret will become invalid. In that case you can logout and login Harbor via SSO flow again so Harbor can get a +new ID token and the CLI secret will work again. + + +## Robot Account +Robot Accounts are accounts created by project admins that are intended for automated operations. They have the following limitations: + +1, Robot Accounts cannot login Harbor portal +2, Robot Accounts can only perform operations by using the Docker and Helm CLIs. + +### Add a Robot Account +If you are a project admin, you can create a Robot Account by clicking "New Robot Account" in the `Robot Accounts` tab of a project, and enter a name, a description, and grant permission to the account to push and pull images and Helm charts. +![add_robot_account](img/robotaccount/add_robot_account.png) + +![add_robot_account](img/robotaccount/add_robot_account_2.png) + +> **NOTE:** The name will become `robot$` and will be used to distinguish a robot account from a normal harbor user. + +![copy_robot_account_token](img/robotaccount/copy_robot_account_token.png) +As Harbor doesn't store your account token, please make sure to copy it in the pop up dialog after creating, otherwise, there is no way to get it from Harbor. + +### Configure duration of robot account +If you are a system admin, you can configure the robot account token duration in days. +![set_robot_account_token_duration](img/robotaccount/set_robot_account_token_duration.png) + +### Authenticate with a robot account +To authenticate with a Robot Account, use `docker login` as below, + +``` +docker login harbor.io +Username: robot$accountname +Password: Thepasswordgeneratedbyprojectadmin +``` + +### Disable a robot account +If you are a project admin, you can disable a Robot Account by clicking "Disable Account" in the `Robot Accounts` tab of a project. +![disable_robot_account](img/robotaccount/disable_delete_robot_account.png) + +### Delete a robot account +If you are a project admin, you can delete a Robot Account by clicking "Delete" in the `Robot Accounts` tab of a project. +![delete_robot_account](img/robotaccount/disable_delete_robot_account.png) + +## Tag Retention Rules + +A repository can rapidly accumulate a large number of image tags, many of which might not be required after a given time or once they have been superseded by a subsequent image build. These excess tags can obviously consume large quantities of storage capacity. As a system administrator, you can define rules that govern how many tags of a given repository to retain, or for how long to retain certain tags. + +### How Tag Retention Rules Work + +You define tag retention rules on repositories, not on projects. This allows for greater granularity when defining your retention rules. As the name suggests, when you define a retention rule for a repository, you are identifying which tags to retain. You do not define rules to explicitly remove tags. Rather, when you set a rule, any tags in a repository that are not identified as being eligible for retention are discarded. + +A tag retention rule has 3 filters that are applied sequentially, as described in the following table. + +|Order|Filter|Description| +|---|---|---| +|First|Repository or repositories|Identify the repository or repositories on which to apply the rule. You can identify repositories that either have a certain name or name fragment, or that do not have that name or name fragment. Wild cards (for example `*repo`, `repo*`, and `**`) are permitted. The repository filter is applied first to mark the repositories to which to apply the retention rule. The identified repositories are earmarked for further matching based on the tag criteria. No action is taken on the nonspecified repositories at this stage.| +|Second|Quantity to retain|Set which tags to retain either by specifying a maximum number of tags, or by specifying a maximum period for which to retain tags.| +|Third|Tags to retain|Identify the tag or tags on which to apply the rule. You can identify tags that either have a certain name or name fragment, or that do not have that name or name fragment. Wild cards (for example `*tag`, `tag*`, and `**`) are permitted.| + +For information about how the `**` wildcard is applied, see https://github.com/bmatcuk/doublestar#patterns. + +#### Example 1 + +- You have 5 repositories in a project, repositories A to E. + - Repository A has 100 image tags, all of which have been pulled in the last week. + - Repositories B to E each have 6 images, none of which have been pulled in the last month. +- You set the repository filter to `**`, meaning that all repositories in the project are included. +- You set the retention policy to retain the 10 most recently pulled images in each repository. +- You set the tag filter to `**`, meaning that all tags in the repository are included. + +In this example the rule retains the 10 most recently pulled images in repository A, and all 6 of the images in each of the 4 repositories B to E. So, a total of 34 image tags are retained in the project. In other words, the rule does not treat all of the images in repositories A to E as a single pool from which to choose the 10 most recent images. So, even if the 11th to 100th tags in repository A have been pulled more recently than any of the tags in repositories B to E, all of the tags in repositories B to E are retained, because each of those repositories has fewer than 10 tags. + +#### Example 2 + +This example uses the same project and repositories as example 1, but sets the retention policy to retain the images in each repository that have been pulled in the last 7 days. + +In this case, all of the images in repository A are retained because they have been pulled in the last 7 days. None of the images in repositories B to E are retained, because none of them has been pulled in the last week. In this example, 100 images are retained, as opposed to 34 images in example 1. + +### Combining Rules on a Respository + +You can define up to 15 rules per project. You can apply multiple rules to a repository or set of repositories. When you apply multiple rules to a repository, they are applied with `OR` logic rather than with `AND` logic. In this way, there is no prioritization of application of the rules on a given repository. Rules run concurrently in the background, and the resulting sets from each rule are combined at the end of the run. + +#### Example 3 + +This example uses the same project and repositories as examples 1 and 2, but sets two rules: + +- Rule 1: Retain all of the images in each repository that have been pulled in the last 7 days. +- Rule 2: Retain a maximum number of 10 images in each repository. + +For repository A, rule 1 retains all of the images because they have all been pulled in the last week. Rule 2 retains the 10 most recently pulled images. So, since the two rules are applied with an `OR` relationship, all 100 images are retained in repository A. + +For repositories B-E, rule 1 will retain 0 images as no images are pulled in the last week. Rule 2 will retain all 6 images because 6 < 10. So, since the two rules are applied with an `OR` relationship, for repositories B-E, each repository will keep all 6 images. + +In this example, all of the images are retained. + +#### Example 4 + +This example uses a different repository to the previous examples. + +- You have a repository that has 12 tags: + + |Production|Release Candidate|Release| + |---|---|---| + |`2.1-your_repo-prod`|`2.1-your_repo-rc`|`2.1-your_repo-release`| + |`2.2-your_repo-prod`|`2.2-your_repo-rc`|`2.2-your_repo-release`| + |`3.1-your_repo-prod`|`3.1-your_repo-rc`|`3.1-your_repo-release`| + |`4.4-your_repo-prod`|`4.4-your_repo-rc`|`4.4-your_repo-release`| + +- You define three tag retention rules on this repository: + - Retain the 10 most recently pushed image tags that start with `2`. + - Retain the 10 most recently pushed image tags that end with `-prod`. + - Retain all tags that do not include `2.1-your_repo-prod`. + +In this example, the rules are applied to the following 7 tags: + +- `2.1-your_repo-rc` +- `2.1-your_repo-release` +- `2.2-your_repo-prod` +- `2.2-your_repo-rc` +- `2.2-your_repo-release` +- `3.1-your_repo-prod` +- `4.4-your_repo-prod` + +### How Tag Retention Rules Interact with Project Quotas + +The system administrator can set a maximum on the number of tags that a project can contain and the amount of storage that it can consume. For information about project quotas, see [Set Project Quotas](#set-project-quotas). + +If you set a quota on a project, this quota cannot be exceeded. The quota is applied to a project even if you set a retention rule that would exceed it. In other words, you cannot use retention rules to bypass quotas. + +### Configure Tag Retention Rules + +1. Select a project and go to the **Tag Retention** tab. + ![Tag Retention option](img/tag-retention1.png) +1. Click **Add Rule** to add a rule. +1. In the **For the repositories** drop-down menu, select **matching** or **excluding**. + ![Select repositories](img/tag-retention2.png) +1. Identify the repositories on which to apply the rule. + + You can define the repositories on which to apply the rule by entering the following information: + + - A repository name, for example `my_repo_1`. + - A comma-separated list of repository names, for example `my_repo_1,my_repo_2,your_repo_3`. + - A partial repository name with wildcards, for example `my_*`, `*_3`, or `*_repo_*`. + - `**` to apply the rule to all of the repositories in the project. + + If you selected **matching**, the rule is applied to the repositories you identified. If you selected **excluding**, the rule is applied to all of the repositories in the project except for the ones that you identified. +1. Define how many tags to retain or how the period to retain tags. + ![Select retention criteria](img/tag-retention3.png) + + |Option|Description| + |---|---| + |**retain the most recently pushed # images**|Enter the maximum number of images to retain, keeping the ones that have been pushed most recently. There is no maximum age for an image.| + |**retain the most recently pulled # images**|Enter the maximum number of images to retain, keeping only the ones that have been pulled recently. There is no maximum age for an image.| + |**retain the images pushed within the last # days**|Enter the number of days to retain images, keeping only the ones that have been pushed during this period. There is no maximum number of images.| + |**retain the images pulled within the last # days**|Enter the number of days to retain images, keeping only the ones that have been pulled during this period. There is no maximum number of images.| + |**retain always**|Always retain the images identified by this rule.| + +1. In the **Tags** drop-down menu, select **matching** or **excluding**. +1. Identify the tags on which to apply the rule. + + You can define the tags on which to apply the rule by entering the following information: + + - A tag name, for example `my_tag_1`. + - A comma-separated list of tag names, for example `my_tag_1,my_tag_2,your_tag_3`. + - A partial tag name with wildcards, for example `my_*`, `*_3`, or `*_tag_*`. + - `**` to apply the rule to all of the tags in the project. + + If you selected **matching**, the rule is applied to the tags you identified. If you selected **excluding**, the rule is applied to all of the tags in the repository except for the ones that you identified. +1. Click **Add** to save the rule. +1. (Optional) Click **Add Rule** to add more rules, up to a maximum of 15 per project. +1. (Optional) Under Schedule, click **Edit** and select how often to run the rule. + ![Select retention criteria](img/tag-retention4.png) + If you select **Custom**, enter a cron job command to schedule the rule. + + **NOTE**: If you define multiple rules, the schedule is applied to all of the rules. You cannot schedule different rules to run at different times. +1. Click **Dry Run** to test the rule or rules that you have defined. +1. Click **Run Now** to run the rule immediately. + +**WARNING**: You cannot revert a rule after you run it. It is strongly recommended to perform a dry run before you run rules. + +To modify an existing rule, click the three vertical dots next to a rule to disable, edit, or delete that rule. + +![Modify tag retention rules](img/tag-retention5.png) + +## Webhook Notifications + +If you are a project administrator, you can configure a connection from a project in Harbor to a webhook endpoint. If you configure webhooks, Harbor notifies the webhook endpoint of certain events that occur in the project. Webhooks allow you to integrate Harbor with other tools to streamline continuous integration and development processes. + +The action that is taken upon receiving a notification from a Harbor project depends on your continuous integration and development processes. For example, by configuring Harbor to send a `POST` request to a webhook listener at an endpoint of your choice, you can trigger a build and deployment of an application whenever there is a change to an image in the repository. + +### Supported Events + +You can define one webhook endpoint per project. Webhook notifications provide information about events in JSON format and are delivered by `HTTP` or `HTTPS POST` to an existing webhhook endpoint URL that you provide. The following table describes the events that trigger notifications and the contents of each notification. + +|Event|Webhook Event Type|Contents of Notification| +|---|---|---| +|Push image to registry|`IMAGE PUSH`|Repository namespace name, repository name, resource URL, tags, manifest digest, image name, push time timestamp, username of user who pushed image| +|Pull manifest from registry|`IMAGE PULL`|Repository namespace name, repository name, manifest digest, image name, pull time timestamp, username of user who pulled image| +|Delete manifest from registry|`IMAGE DELETE`|Repository namespace name, repository name, manifest digest, image name, image size, delete time timestamp, username of user who deleted image| +|Upload Helm chart to registry|`CHART PUSH`|Repository name, chart name, chart type, chart version, chart size, tag, timestamp of push, username of user who uploaded chart| +|Download Helm chart from registry|`CHART PULL`|Repository name, chart name, chart type, chart version, chart size, tag, timestamp of push, username of user who pulled chart| +|Delete Helm chart from registry|`CHART DELETE`|Repository name, chart name, chart type, chart version, chart size, tag, timestamp of delete, username of user who deleted chart| +|Image scan completed|`IMAGE SCAN COMPLETED`|Repository namespace name, repository name, tag scanned, image name, number of critical issues, number of major issues, number of minor issues, last scan status, scan completion time timestamp, vulnerability information (CVE ID, description, link to CVE, criticality, URL for any fix), username of user who performed scan| +|Image scan failed|`IMAGE SCAN FAILED`|Repository namespace name, repository name, tag scanned, image name, error that occurred, username of user who performed scan| + +#### JSON Payload Format + +The webhook notification is delivered in JSON format. The following example shows the JSON notification for a push image event: + +``` +{ + "event_type": "pushImage" + "events": [ + { + "project": "prj", + "repo_name": "repo1", + "tag": "latest", + "full_name": "prj/repo1", + "trigger_time": 158322233213, + "image_id": "9e2c9d5f44efbb6ee83aecd17a120c513047d289d142ec5738c9f02f9b24ad07", + "project_type": "Private" + } + ] +} +``` + +### Webhook Endpoint Recommendations + +The endpoint that receives the webhook should ideally have a webhook listener that is capable of interpreting the payload and acting upon the information it contains. For example, running a shell script. + +### Example Use Cases + +You can configure your continuous integration and development infrastructure so that it performs the following types of operations when it receives a webhook notification from Harbor. + +- Image push: + - Trigger a new build immediately following a push on selected repositories or tags. + - Notify services or applications that use the image that a new image is available and pull it. + - Scan the image using Clair. + - Replicate the image to remote registries. +- Image scanning: + - If a vulnerability is found, rescan the image or replicate it to another registry. + - If the scan passes, deploy the image. + +### Configure Webhooks + +1. Select a project and go to the Webhooks tab. + ![Webhooks option](img/webhooks1.png) +1. Enter the URL for your webhook endpoint listener. + ![Webhook URL](img/webhooks2.png) +1. If your webhook listener implements authentication, enter the authentication header. +1. To implement `HTTPS POST` instead of `HTTP POST`, select the **Verifiy Remote Certficate** check box. +1. Click **Test Endpoint** to make sure that Harbor can connect to the listener. +1. Click **Continue** to create the webhook. + +When you have created the webhook, you see the status of the different notifications and the timestamp of the last time each notification was triggered. You can click **Disable** to disable notifications. + +![Webhook Status](img/webhooks3.png) + +**NOTE**: You can only disable and reenable all notifications. You cannot disable and enable selected notifications. + +If a webhook notification fails to send, or if it receives an HTTP error response with a code other than `2xx`, the notification is re-sent based on the configuration that you set in `harbor.yml`. + +### Globally Enable and Disable Webhooks + +As a system administrator, you can enable and disable webhook notifications for all projects. + +1. Go to **Configuration** > **System Settings**. +1. Scroll down and check or uncheck the **Webhooks enabled** check box. + + ![Enable/disable webhooks](img/webhooks4.png) + +## API Explorer + +Harbor integrated swagger UI from 1.8. That means all apis can be invoked through UI. Normally, user have 2 ways to navigate to API Explorer. + +1. User can login harbor, and click the "API EXPLORER" button.All apis will be invoked with current user authorization. +![navigation bar](img/api_explorer_btn.png) + + +2. User can navigate to swagger page by ip address by router "devcenter". For example: https://10.192.111.118/devcenter. After go to the page, need to click "authorize" button to give basic authentication to all apis. All apis will be invoked with the authorized user authorization. +![authentication](img/authorize.png) + + From b603f8ab6227c1fc767c17d224f21dffdca7a034 Mon Sep 17 00:00:00 2001 From: wang yan Date: Tue, 17 Sep 2019 14:48:51 +0800 Subject: [PATCH 032/122] Add quota switcher swagger doc Signed-off-by: wang yan --- docs/swagger.yaml | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 83cb717eb..b2cd2ee44 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -2415,7 +2415,7 @@ paths: description: | This endpoint is for syncing quota usage of registry/chart with database. tags: - - Products + - Products responses: '200': description: Sync repositories successfully. @@ -2423,6 +2423,28 @@ paths: description: User need to log in first. '403': description: User does not have permission of system admin role. + /internal/switchquota: + put: + summary: Enable or disable quota. + description: | + This endpoint is for enable/disable quota. When quota is disabled, no resource require/release in image/chart push and delete. + tags: + - Products + parameters: + - name: switcher + in: body + required: true + schema: + $ref: '#/definitions/QuotaSwitcher' + responses: + '200': + description: Enable/Disable quota successfully. + '401': + description: User need to log in first. + '403': + description: User does not have permission of system admin role. + '500': + description: Unexpected internal errors. /systeminfo: get: summary: Get general system info @@ -6248,3 +6270,9 @@ definitions: retained: type: integer + QuotaSwitcher: + type: object + properties: + enabled: + type: boolean + description: The quota is enable or disable From 5498b5719b574f4845317182b665ca82e06c1741 Mon Sep 17 00:00:00 2001 From: wang yan Date: Tue, 17 Sep 2019 16:36:45 +0800 Subject: [PATCH 033/122] remove filter redeclared as imported package name in base.go It's introduced by https://github.com/goharbor/harbor/pull/8976 Signed-off-by: wang yan --- src/core/controllers/base.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/core/controllers/base.go b/src/core/controllers/base.go index 65d2f6af9..6337973fb 100644 --- a/src/core/controllers/base.go +++ b/src/core/controllers/base.go @@ -25,8 +25,6 @@ import ( "strconv" "strings" - "github.com/goharbor/harbor/src/core/filter" - "github.com/astaxie/beego" "github.com/beego/i18n" "github.com/goharbor/harbor/src/common" From bf3416cbf73a9de4215cfe5475b8dc74211498bc Mon Sep 17 00:00:00 2001 From: xaleeks Date: Tue, 17 Sep 2019 22:55:24 +0800 Subject: [PATCH 034/122] added permissions for 1.9 features Signed-off-by: xaleeks --- docs/permissions.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/permissions.md b/docs/permissions.md index f732f0de6..26e520107 100644 --- a/docs/permissions.md +++ b/docs/permissions.md @@ -43,3 +43,11 @@ The following table depicts the various user permission levels in a project. | Add/Remove labels of helm chart version | | ✓ | ✓ | ✓ | | See a list of project robots | | | ✓ | ✓ | | Create/edit/delete project robots | | | | ✓ | +| See configured CVE whitelist | ✓ | ✓ | ✓ | ✓ | +| Create/edit/remove CVE whitelist | | | ✓ | ✓ | +| Enable/disable webhooks | | ✓ | ✓ | ✓ | +| Create/delete tag retention rules | | ✓ | ✓ | ✓ | +| Enable/disable tag retention rules | | ✓ | ✓ | ✓ | +| See project quotas | ✓ | ✓ | ✓ | ✓ | +| Edit project quotas | | | | | + From 8ae4c782149dd5e15041d11dfad59134f3bc7783 Mon Sep 17 00:00:00 2001 From: xaleeks Date: Wed, 18 Sep 2019 00:47:30 +0800 Subject: [PATCH 035/122] fixed cve whitelist permissions Signed-off-by: xaleeks --- docs/permissions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/permissions.md b/docs/permissions.md index 26e520107..2543ef3c3 100644 --- a/docs/permissions.md +++ b/docs/permissions.md @@ -44,7 +44,7 @@ The following table depicts the various user permission levels in a project. | See a list of project robots | | | ✓ | ✓ | | Create/edit/delete project robots | | | | ✓ | | See configured CVE whitelist | ✓ | ✓ | ✓ | ✓ | -| Create/edit/remove CVE whitelist | | | ✓ | ✓ | +| Create/edit/remove CVE whitelist | | | | ✓ | | Enable/disable webhooks | | ✓ | ✓ | ✓ | | Create/delete tag retention rules | | ✓ | ✓ | ✓ | | Enable/disable tag retention rules | | ✓ | ✓ | ✓ | From a7c7a8e6759b58c936860a9cc7d5425dbdddbba2 Mon Sep 17 00:00:00 2001 From: Yogi_Wang Date: Thu, 5 Sep 2019 15:13:13 +0800 Subject: [PATCH 036/122] Upgrade angualr from 7.1.3 to 8.2.0 and clarity from 1.0 to 2.2 Signed-off-by: Yogi_Wang Signed-off-by: Meina Zhou Signed-off-by: sshijun --- .travis.yml | 3 +- make/photon/portal/Dockerfile | 3 +- src/portal/angular.json | 1 + src/portal/lib/ng-package.json | 5 - src/portal/lib/ng-package.prod.json | 5 - src/portal/lib/package-lock.json | 5 + src/portal/lib/package.json | 30 +- src/portal/lib/src/config/config.ts | 1 + .../lib/src/config/gc/gc.component.spec.ts | 11 +- src/portal/lib/src/config/gc/gc.component.ts | 2 +- .../edit-project-quotas.component.html | 134 +- .../edit-project-quotas.component.scss | 110 +- .../edit-project-quotas.component.ts | 4 +- .../project-quotas.component.scss | 16 + .../project-quotas.component.ts | 2 +- .../src/config/registry-config.component.ts | 8 +- .../replication-config.component.ts | 2 +- .../system/system-settings.component.html | 221 +- .../system/system-settings.component.scss | 47 +- .../system/system-settings.component.ts | 6 +- .../vulnerability-config.component.ts | 4 +- .../create-edit-endpoint.component.html | 154 +- .../create-edit-endpoint.component.ts | 4 +- .../create-edit-label.component.html | 16 +- .../create-edit-label.component.scss | 11 +- .../create-edit-label.component.spec.ts | 2 +- .../create-edit-label.component.ts | 4 +- .../create-edit-rule.component.html | 339 +- .../create-edit-rule.component.scss | 33 +- .../create-edit-rule.component.ts | 2 +- .../cron-schedule.component.html | 6 +- .../datetime-picker.component.ts | 2 +- .../src/endpoint/endpoint.component.spec.ts | 2 +- .../lib/src/endpoint/endpoint.component.ts | 4 +- .../lib/src/filter/filter.component.html | 2 +- .../lib/src/gridview/grid-view.component.ts | 4 +- .../image-name-input.component.spec.ts | 3 +- src/portal/lib/src/label/label.component.ts | 4 +- .../list-replication-rule.component.ts | 4 +- .../lib/src/log/recent-log.component.html | 14 +- .../lib/src/log/recent-log.component.scss | 2 +- .../lib/src/log/recent-log.component.spec.ts | 2 +- .../lib/src/log/recent-log.component.ts | 87 +- .../project-policy-config.component.html | 216 +- .../project-policy-config.component.scss | 40 +- .../project-policy-config.component.ts | 6 +- .../push-image/push-image.component.spec.ts | 4 +- .../src/push-image/push-image.component.ts | 6 +- src/portal/lib/src/push-image/push-image.scss | 1 + .../src/replication/replication.component.ts | 8 +- .../repository-gridview.component.ts | 4 +- .../src/repository/repository.component.html | 5 +- .../src/repository/repository.component.ts | 2 +- .../lib/src/tag/tag-detail.component.html | 4 +- src/portal/lib/src/tag/tag.component.html | 10 +- src/portal/lib/src/tag/tag.component.scss | 4 + src/portal/lib/src/tag/tag.component.ts | 8 +- .../ngx-clipboard/clipboard.service.ts | 2 +- src/portal/lib/src/utils.ts | 7 +- .../result-grid.component.spec.ts | 5 +- src/portal/lib/tsconfig.lib.json | 5 +- src/portal/package-lock.json | 9771 ++++++++--------- src/portal/package.json | 55 +- .../account-settings-modal.component.html | 117 +- .../account-settings-modal.component.scss | 4 + .../account-settings-modal.component.ts | 8 +- .../forgot-password.component.html | 31 +- .../forgot-password.component.ts | 4 +- .../password-setting.component.html | 70 +- .../password-setting.component.ts | 4 +- .../reset-password.component.html | 46 +- .../reset-password.component.ts | 4 +- .../account/sign-up/sign-up-page.component.ts | 2 +- .../app/account/sign-up/sign-up.component.ts | 6 +- src/portal/src/app/app.module.ts | 7 +- .../harbor-shell/harbor-shell.component.ts | 8 +- .../config/auth/config-auth.component.html | 718 +- .../config/auth/config-auth.component.scss | 20 +- .../app/config/auth/config-auth.component.ts | 2 +- .../src/app/config/config.component.scss | 8 + src/portal/src/app/config/config.component.ts | 6 +- .../config/email/config-email.component.html | 142 +- .../config/email/config-email.component.ts | 2 +- .../add-group-modal.component.ts | 2 +- src/portal/src/app/group/group.component.ts | 2 +- .../src/app/log/audit-log.component.html | 2 +- src/portal/src/app/log/audit-log.component.ts | 9 +- .../create-project.component.html | 140 +- .../create-project.component.ts | 7 +- .../create-project/create-project.scss | 55 +- .../label-filter/label-filter.component.ts | 2 +- .../label-marker/label-marker.component.ts | 2 +- .../helm-chart-version.component.ts | 2 +- .../helm-chart.component.html | 72 +- .../helm-chart.component.scss | 28 +- .../helm-chart.component.ts | 4 +- .../list-project/list-project.component.html | 2 +- .../member/add-group/add-group.component.html | 103 +- .../member/add-group/add-group.component.scss | 5 +- .../member/add-group/add-group.component.ts | 2 +- .../add-http-auth-group.component.html | 45 +- .../add-http-auth-group.component.ts | 4 +- .../add-member/add-member.component.html | 77 +- .../add-member/add-member.component.scss | 2 +- .../member/add-member/add-member.component.ts | 12 +- .../app/project/member/member.component.html | 4 +- .../app/project/member/member.component.ts | 6 +- .../src/app/project/project.component.html | 8 +- .../src/app/project/project.component.scss | 13 +- .../src/app/project/project.component.ts | 4 +- .../add-robot/add-robot.component.html | 77 +- .../add-robot/add-robot.component.ts | 4 +- .../robot-account/robot-account.component.ts | 2 +- .../add-rule/add-rule.component.ts | 2 +- .../tag-retention.component.html | 23 +- .../tag-retention.component.scss | 18 +- .../tag-retention/tag-retention.component.ts | 19 +- .../add-webhook-form.component.html | 65 +- .../add-webhook-form.component.scss | 3 + .../add-webhook-form.component.ts | 7 +- .../add-webhook/add-webhook.component.ts | 2 +- .../project/webhook/webhook.component.html | 5 +- .../app/project/webhook/webhook.component.ts | 38 +- .../replication/replication-page.component.ts | 2 +- .../tag-repository.component.ts | 2 +- .../src/app/shared/gauge/gauge.component.ts | 4 +- .../new-user-form.component.html | 144 +- .../new-user-form/new-user-form.component.ts | 2 +- .../src/app/sign-in/sign-in.component.html | 91 +- .../src/app/sign-in/sign-in.component.scss | 12 + .../src/app/sign-in/sign-in.component.ts | 6 +- .../change-password.component.html | 48 +- .../change-password.component.ts | 4 +- .../src/app/user/new-user-modal.component.ts | 4 +- src/portal/src/app/user/user.component.html | 18 +- src/portal/src/app/user/user.component.ts | 5 +- src/portal/src/global.scss | 220 + src/portal/src/i18n/lang/en-us-lang.json | 3 +- src/portal/src/i18n/lang/es-es-lang.json | 5 +- src/portal/src/i18n/lang/fr-fr-lang.json | 5 +- src/portal/src/i18n/lang/pt-br-lang.json | 7 +- src/portal/src/i18n/lang/tr-tr-lang.json | 3 +- src/portal/src/i18n/lang/zh-cn-lang.json | 3 +- src/portal/src/polyfills.ts | 2 + src/portal/src/styles.css | 14 + src/portal/src/tsconfig.app.json | 6 +- src/portal/tsconfig.json | 3 +- .../Harbor-Pages/Configuration.robot | 8 +- .../Project-Helmcharts_Elements.robot | 4 +- .../Harbor-Pages/Project-Members.robot | 4 +- tests/resources/Harbor-Pages/Project.robot | 18 +- .../Harbor-Pages/Project_Elements.robot | 5 +- .../resources/Harbor-Pages/Replication.robot | 2 +- tests/resources/Harbor-Pages/ToolKit.robot | 8 +- tests/resources/Harbor-Pages/Verify.robot | 4 +- 155 files changed, 6764 insertions(+), 7474 deletions(-) create mode 100644 src/portal/lib/package-lock.json create mode 100644 src/portal/src/global.scss diff --git a/.travis.yml b/.travis.yml index 9b3429fe8..7ba2076f8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,7 +20,8 @@ matrix: - go: 1.12.5 env: - OFFLINE=true - - node_js: 10.16.2 + - language: node_js + node_js: 10.16.2 env: - UI_UT=true env: diff --git a/make/photon/portal/Dockerfile b/make/photon/portal/Dockerfile index 9f71410f7..004d0113a 100644 --- a/make/photon/portal/Dockerfile +++ b/make/photon/portal/Dockerfile @@ -6,6 +6,7 @@ COPY ./LICENSE /portal_src WORKDIR /build_dir + RUN cp -r /portal_src/* /build_dir \ && ls -la \ && apt-get update \ @@ -14,7 +15,7 @@ RUN cp -r /portal_src/* /build_dir \ && npm install \ && npm run build_lib \ && npm run link_lib \ - && npm run release + && node --max_old_space_size=8192 'node_modules/@angular/cli/bin/ng' build --prod FROM photon:2.0 diff --git a/src/portal/angular.json b/src/portal/angular.json index 157657038..b7bf203d3 100644 --- a/src/portal/angular.json +++ b/src/portal/angular.json @@ -26,6 +26,7 @@ "node_modules/@clr/ui/clr-ui.min.css", "node_modules/swagger-ui/dist/swagger-ui.css", "node_modules/prismjs/themes/prism-solarizedlight.css", + "src/global.scss", "src/styles.css" ], "scripts": [ diff --git a/src/portal/lib/ng-package.json b/src/portal/lib/ng-package.json index 89852ea86..921319790 100644 --- a/src/portal/lib/ng-package.json +++ b/src/portal/lib/ng-package.json @@ -4,11 +4,6 @@ "deleteDestPath": false, "lib": { "entryFile": "index.ts", - "externals": { - "@ngx-translate/core": "ngx-translate-core", - "@ngx-translate/core/index": "ngx-translate-core", - "ngx-markdown": "ngx-markdown" - }, "umdModuleIds": { "@clr/angular" : "angular", "ngx-markdown" : "ngxMarkdown", diff --git a/src/portal/lib/ng-package.prod.json b/src/portal/lib/ng-package.prod.json index 85a87a50d..4bf1dc101 100644 --- a/src/portal/lib/ng-package.prod.json +++ b/src/portal/lib/ng-package.prod.json @@ -3,11 +3,6 @@ "dest": "./dist", "lib": { "entryFile": "index.ts", - "externals": { - "@ngx-translate/core": "ngx-translate-core", - "@ngx-translate/core/index": "ngx-translate-core", - "ngx-markdown": "ngx-markdown" - }, "umdModuleIds": { "@clr/angular" : "angular", "ngx-markdown" : "ngxMarkdown", diff --git a/src/portal/lib/package-lock.json b/src/portal/lib/package-lock.json new file mode 100644 index 000000000..e4655fb88 --- /dev/null +++ b/src/portal/lib/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "@harbor/ui", + "version": "1.10.0", + "lockfileVersion": 1 +} diff --git a/src/portal/lib/package.json b/src/portal/lib/package.json index 9c49c4207..db2c23758 100644 --- a/src/portal/lib/package.json +++ b/src/portal/lib/package.json @@ -1,7 +1,7 @@ { "name": "@harbor/ui", - "version": "1.9.0", - "description": "Harbor shared UI components based on Clarity and Angular7", + "version": "1.10.0", + "description": "Harbor shared UI components based on Clarity and Angular8", "author": "CNCF", "module": "index.js", "main": "bundles/harborui.umd.min.js", @@ -19,26 +19,26 @@ }, "homepage": "https://github.com/vmware/harbor#readme", "peerDependencies": { - "@angular/animations": "^7.1.3", - "@angular/common": "^7.1.3", - "@angular/compiler": "^7.1.3", - "@angular/core": "^7.1.3", - "@angular/forms": "^7.1.3", - "@angular/http": "^7.1.3", - "@angular/platform-browser": "^7.1.3", - "@angular/platform-browser-dynamic": "^7.1.3", - "@angular/router": "^7.1.3", + "@angular/animations": "^8.2.0", + "@angular/common": "^8.2.0", + "@angular/compiler": "^8.2.0", + "@angular/core": "^8.2.0", + "@angular/forms": "^8.2.0", + "@angular/http": "^8.2.0", + "@angular/platform-browser": "^8.2.0", + "@angular/platform-browser-dynamic": "^8.2.0", + "@angular/router": "^8.2.0", "@ngx-translate/core": "^10.0.2", "@ngx-translate/http-loader": "^3.0.1", "@webcomponents/custom-elements": "^1.1.3", - "@clr/angular": "^1.0.0", - "@clr/ui": "^1.0.0", - "@clr/icons": "^1.0.0", + "@clr/angular": "^2.1.0", + "@clr/icons": "^2.1.0", + "@clr/ui": "^2.1.0", "core-js": "^2.5.4", "intl": "^1.2.5", "mutationobserver-shim": "^0.3.2", "ngx-cookie": "^1.0.0", - "ngx-markdown": "^6.2.0", + "ngx-markdown": "^8.1.0", "rxjs": "^6.3.3", "ts-helpers": "^1.1.1", "web-animations-js": "^2.2.1", diff --git a/src/portal/lib/src/config/config.ts b/src/portal/lib/src/config/config.ts index 9505b11c5..7d11b5d0a 100644 --- a/src/portal/lib/src/config/config.ts +++ b/src/portal/lib/src/config/config.ts @@ -100,6 +100,7 @@ export class Configuration { oidc_scope?: StringValueItem; count_per_project: NumberValueItem; storage_per_project: NumberValueItem; + cfg_expiration: NumberValueItem; public constructor() { this.auth_mode = new StringValueItem("db_auth", true); this.project_creation_restriction = new StringValueItem("everyone", true); diff --git a/src/portal/lib/src/config/gc/gc.component.spec.ts b/src/portal/lib/src/config/gc/gc.component.spec.ts index c9b442682..1f4941b8c 100644 --- a/src/portal/lib/src/config/gc/gc.component.spec.ts +++ b/src/portal/lib/src/config/gc/gc.component.spec.ts @@ -9,6 +9,7 @@ import { GcViewModelFactory } from './gc.viewmodel.factory'; import { CronScheduleComponent } from '../../cron-schedule/cron-schedule.component'; import { CronTooltipComponent } from "../../cron-schedule/cron-tooltip/cron-tooltip.component"; import { of } from 'rxjs'; +import { GcJobData } from './gcLog'; describe('GcComponent', () => { let component: GcComponent; @@ -18,13 +19,17 @@ describe('GcComponent', () => { systemInfoEndpoint: "/api/system/gc" }; let mockSchedule = []; - let mockJobs = [ + let mockJobs: GcJobData[] = [ { id: 22222, schedule: null, job_status: 'string', - creation_time: new Date(), - update_time: new Date(), + creation_time: new Date().toDateString(), + update_time: new Date().toDateString(), + job_name: 'string', + job_kind: 'string', + job_uuid: 'string', + delete: false } ]; let spySchedule: jasmine.Spy; diff --git a/src/portal/lib/src/config/gc/gc.component.ts b/src/portal/lib/src/config/gc/gc.component.ts index 44d805d92..ccd4196aa 100644 --- a/src/portal/lib/src/config/gc/gc.component.ts +++ b/src/portal/lib/src/config/gc/gc.component.ts @@ -32,7 +32,7 @@ export class GcComponent implements OnInit { getText = 'CONFIG.GC'; getLabelCurrent = 'GC.CURRENT_SCHEDULE'; @Output() loadingGcStatus = new EventEmitter(); - @ViewChild(CronScheduleComponent) + @ViewChild(CronScheduleComponent, {static: false}) CronScheduleComponent: CronScheduleComponent; constructor( private gcRepoService: GcRepoService, diff --git a/src/portal/lib/src/config/project-quotas/edit-project-quotas/edit-project-quotas.component.html b/src/portal/lib/src/config/project-quotas/edit-project-quotas/edit-project-quotas.component.html index c9bd48440..89ab0c585 100644 --- a/src/portal/lib/src/config/project-quotas/edit-project-quotas/edit-project-quotas.component.html +++ b/src/portal/lib/src/config/project-quotas/edit-project-quotas/edit-project-quotas.component.html @@ -4,79 +4,73 @@