Skip to content

Commit 1f4590a

Browse files
author
Simon Emms
committed
[install]: document installing via kots
1 parent 3d4e0e4 commit 1f4590a

File tree

4 files changed

+154
-0
lines changed

4 files changed

+154
-0
lines changed

install/README.md

+45
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,48 @@
11
# Install
22

33
Resources for installing Gitpod
4+
5+
## Replicated/Kots
6+
7+
Gitpod has teamed up with Replicated to simplify the installation of Gitpod for self-hosted users. This provides an installation interface, simplified license delivery for both community and paying users, easier upgrades and improved
8+
9+
Kubernetes Off-The-Shelf (kots) is the technology used to deliver and Replicated is the company behind it. The terms may be used interchangably, but we will tend to talk of kots.
10+
11+
### Channels
12+
13+
> The `stable` channel should be used
14+
15+
The `stable` channel represents tested and validated releases. This will typically receive one update per month with each [milestone](https://github.com/gitpod-io/gitpod/milestones). Hotfixes may be released during the month where necessary.
16+
17+
The `beta` channel represents the release candidates for the `stable` channel. This will receive updates prior to a `stable` release ready for testing.
18+
19+
The `unstable` channel receives every release that is pushed to the `main` branch, typically receiving multiple updates per day.
20+
21+
#### Licenses
22+
23+
A license is required to install via kots. For a full list of features, please see our [docs](https://www.gitpod.io/self-hosted). To obtain a license for a paid subscription, please go to the [enterprise license](https://www.gitpod.io/enterprise-license) section of our docs.
24+
25+
Download the licenses below:
26+
27+
- [Stable](./licenses/Community.yaml) _← recommended_
28+
- [Beta](./licenses/Community%20(Beta).yaml)
29+
- [Unstable](./licenses/Community%20(Unstable).yaml)
30+
31+
### Installation
32+
33+
#### Existing Cluster
34+
35+
```shell
36+
curl https://kots.io/install | bash
37+
kubectl kots install gitpod
38+
```
39+
40+
For details instructions on the kots CLI, please see the [Replicated docs](https://docs.replicated.com/reference/kots-cli-getting-started).
41+
42+
#### Embedded Cluster
43+
44+
> Documentation coming soon
45+
46+
## Installer
47+
48+
For advanced users, the [Installer](./installer) is available.
+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
apiVersion: kots.io/v1beta1
2+
kind: License
3+
metadata:
4+
name: communitybeta
5+
spec:
6+
appSlug: gitpod
7+
channelID: 259YYCMTfMbbN8zxJSvlWjsBDEI
8+
channelName: Beta
9+
customerName: Community (Beta)
10+
endpoint: https://replicated.app
11+
entitlements:
12+
domain:
13+
title: Domain
14+
value: ""
15+
valueType: String
16+
expires_at:
17+
description: License Expiration
18+
title: Expiration
19+
value: ""
20+
valueType: String
21+
levelId:
22+
isHidden: true
23+
title: License level
24+
value: 1
25+
valueType: Integer
26+
seats:
27+
title: User seats
28+
value: 10
29+
valueType: Integer
30+
isNewKotsUiEnabled: true
31+
isSemverRequired: true
32+
isSnapshotSupported: true
33+
licenseID: 273KPoWTBv5agYR2ulVguz5lsFm
34+
licenseSequence: 1
35+
licenseType: community
36+
signature: eyJsaWNlbnNlRGF0YSI6ImV5SmhjR2xXWlhKemFXOXVJam9pYTI5MGN5NXBieTkyTVdKbGRHRXhJaXdpYTJsdVpDSTZJa3hwWTJWdWMyVWlMQ0p0WlhSaFpHRjBZU0k2ZXlKdVlXMWxJam9pWTI5dGJYVnVhWFI1WW1WMFlTSjlMQ0p6Y0dWaklqcDdJbXhwWTJWdWMyVkpSQ0k2SWpJM00wdFFiMWRVUW5ZMVlXZFpVakoxYkZabmRYbzFiSE5HYlNJc0lteHBZMlZ1YzJWVWVYQmxJam9pWTI5dGJYVnVhWFI1SWl3aVkzVnpkRzl0WlhKT1lXMWxJam9pUTI5dGJYVnVhWFI1SUNoQ1pYUmhLU0lzSW1Gd2NGTnNkV2NpT2lKbmFYUndiMlFpTENKamFHRnVibVZzU1VRaU9pSXlOVGxaV1VOTlZHWk5ZbUpPT0hwNFNsTjJiRmRxYzBKRVJVa2lMQ0pqYUdGdWJtVnNUbUZ0WlNJNklrSmxkR0VpTENKc2FXTmxibk5sVTJWeGRXVnVZMlVpT2pFc0ltVnVaSEJ2YVc1MElqb2lhSFIwY0hNNkx5OXlaWEJzYVdOaGRHVmtMbUZ3Y0NJc0ltVnVkR2wwYkdWdFpXNTBjeUk2ZXlKa2IyMWhhVzRpT25zaWRHbDBiR1VpT2lKRWIyMWhhVzRpTENKMllXeDFaU0k2SWlJc0luWmhiSFZsVkhsd1pTSTZJbE4wY21sdVp5SjlMQ0psZUhCcGNtVnpYMkYwSWpwN0luUnBkR3hsSWpvaVJYaHdhWEpoZEdsdmJpSXNJbVJsYzJOeWFYQjBhVzl1SWpvaVRHbGpaVzV6WlNCRmVIQnBjbUYwYVc5dUlpd2lkbUZzZFdVaU9pSWlMQ0oyWVd4MVpWUjVjR1VpT2lKVGRISnBibWNpZlN3aWJHVjJaV3hKWkNJNmV5SjBhWFJzWlNJNklreHBZMlZ1YzJVZ2JHVjJaV3dpTENKMllXeDFaU0k2TVN3aWRtRnNkV1ZVZVhCbElqb2lTVzUwWldkbGNpSXNJbWx6U0dsa1pHVnVJanAwY25WbGZTd2ljMlZoZEhNaU9uc2lkR2wwYkdVaU9pSlZjMlZ5SUhObFlYUnpJaXdpZG1Gc2RXVWlPakV3TENKMllXeDFaVlI1Y0dVaU9pSkpiblJsWjJWeUluMTlMQ0pwYzFOdVlYQnphRzkwVTNWd2NHOXlkR1ZrSWpwMGNuVmxMQ0pwYzA1bGQwdHZkSE5WYVVWdVlXSnNaV1FpT25SeWRXVXNJbWx6VTJWdGRtVnlVbVZ4ZFdseVpXUWlPblJ5ZFdWOWZRPT0iLCJpbm5lclNpZ25hdHVyZSI6ImV5SnNhV05sYm5ObFUybG5ibUYwZFhKbElqb2lVazhyUldvM2JHOXBkM1ozWWxaMFRtOTNZMUJuY0hVM2ExbGtWRVF4ZVdoRWJXWkphMk4wWTBaQ1owZFNNa2t3UkhCeVVFeDZWSEo1TmxSUlRIWkphRUl6TVRaMGRFSk5hVEZaZDNBMFMyazVaa3hyVmxKTldrb3JjaTlJY1RKUFQyMHhVM0JpUW5obU0yTm5aVkYzZVRkQ1lrWlVRbEZqWWxVNVpXaHhjRzVQTTJ4T1VtOUNjRFppUkhoalpWSXZUWFJxU1ZCMlExWm9iamRrZG5SaFIxWnNjSFp2TWtoVVJEWnNNbmNyWVhsbVJYcGhWbHB3Y21kblJXSnZZV2huTVM5R2RFTlhUeTg1UXpORk5WbFlTMjh3WlVRNVRGVlZaazlxWWtZMlRGSkNNa0U1TDB4T2RHdzVOV3BTWVhkSFNGUlFOMGRLUmpsdGQwbHJiSE1yV2xaWVRDOUdkMWRTY3pGRU5teFBXSEpPY1RsNFozaEplSFpMVUhwU2RUQXZWVFJOWW5FeE5FNDVOM0pFY1Zndk0zaG5UVVpHVFU5WVYza3lTMEV6VEVOaVNVSlJTRVJTYVZaMU9XRTFLMk5QV0RSRGF6bG5QVDBpTENKd2RXSnNhV05MWlhraU9pSXRMUzB0TFVKRlIwbE9JRkJWUWt4SlF5QkxSVmt0TFMwdExWeHVUVWxKUWtscVFVNUNaMnR4YUd0cFJ6bDNNRUpCVVVWR1FVRlBRMEZST0VGTlNVbENRMmRMUTBGUlJVRnZOVzU2T1ZsRVMxTlJSbVZ3YjJKYVZqQTVkMXh1V0V0bE4zUnNURlZWVlc1VFpUZ3dNRWREUzFSRFZGcHpibTlxZFVKaGVXcHBTMlIzV2tRelZWUktjVEJFYVc5QmNsaFZhMmhFTkd0bWRETnRSRlEzUmx4dVlrRnllRmRFVlhSck4xZHpWakZtYkVodmNHdGlXRnBJY0VoeVQzZDJXR1pUUWtoaU9WRkJhVWswZDFwRGRtbENaamRPTUhWbFRXbG9VREprYTNCc2JWeHVObVpJTHpGVGJHcGtaVlZTTVdWSmNtVldOMlJEUVhCaWFXNXlOazlVU0RGalUwNDFWbU5aZUhOMlVqaFVPVGdyVVVsSEwwWldhbU0zYTNOclNtSnlNMXh1ZDBKVGRHaGpVbGhLYmt0dFprb3plV1Z4ZDJkbE5rRkJRMmRuVjFaUVREUkdhblpvTkM5Uk1uUnhXa2RDY1d4UFdYVjRMelJJVjNaVFUyVllTMWgyY2x4dVlVUmFja05uU1hGT01YQlJSVmt3YW0weVpreEhaRTlEUldoRmRsUnhaRTQwZFc5bmJFMDFjaXN5ZFVsWWJuVkVhRW92UTNaTGRHZFRSV1pJTTNCa2RWeHVjbEZKUkVGUlFVSmNiaTB0TFMwdFJVNUVJRkJWUWt4SlF5QkxSVmt0TFMwdExWeHVJaXdpYTJWNVUybG5ibUYwZFhKbElqb2laWGxLZW1GWFpIVlpXRkl4WTIxVmFVOXBTbTlPYVRsTVpVZEdVMUpJUmpaaGJWcHFaR3RrYVZwdFNYZE1lVGt3WkRBeFdGbFdjR2xhVmtJMVlWVm5NMVpXYkROaFdHeHRZVE5LTkdONU9YZFJNMVpYVjJ0R05GZElRWGxVZWxJelYxZGtNMVZYZUVKWk1XUXhVVEJuTlZGNlJuWlVSWEJXVldwT1ZHSnNTbnBqYldSNlRqQk9TVTFXYkhKaWJWWkNWV2wwV2xWdFRYbGhXRkpaV2xjeFRtSkZSWHBaV0d4VVRrUmFORnBUZEZCWmEyUmFVbGhDVjJKdFJsZFVSV2QyWW1wWmVtRklXVEpTUmxaMFZVYzFNV0pzU25OVVJUbGhaVmROZVdScWFGcGtSbWg0VkRGYVEyRlZOV2xsUm1oWlN6TktjMXB1YkVOalNGSkxaVzEwUzFJeWR6VlNNVTVZVG01WmNrMUZTbk5qU0hCUFVWaGtlV0pxUlhsVmJWcFNVVzFrUldJeU5WQlNNMXBvVmtoc1RtRldWazVpYkdOM1RWWm9jMkZyVlhkUmFsRXpZbGhKTVV4NlZuQmtWbEpWV1RKb1VHVkVXbFZXZWtwVlYxTTVjVTB4VWxwaFJURjFaVmR2ZVdOdVVYaFVSekZaWVVaR1ZsVXlOV3BYU0dSWFZEQm9hMHN5U2xaVmJUbFZWbTB3TTJNeWNHOWlWMVpEVkVaR1JsVjZWbXBUTVUweFYxUk9TVTVIWnpKa1YyZzFWbXQwY2xOcmRHcFJhM1JxVlZaS1UxUkVaRVJOYkdSeFZYcE9UR1F3TUhsalJXUlhWVEkwTkdGdVl6bFFVMGx6U1cxa2MySXlTbWhpUlhSc1pWVnNhMGxxYjJsWmJWSnNXbFJWTWs1VVdYZFpNbHBwVGtST2FrOVhTWGxQUjBwdFQxUm9iRmxYVG1oYWJVVXlUa1JaYVdaUlBUMGlmUT09In0=
+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
apiVersion: kots.io/v1beta1
2+
kind: License
3+
metadata:
4+
name: communityunstable
5+
spec:
6+
appSlug: gitpod
7+
channelID: 259YYGjrDCpnE0nGmF3yIKIV3zs
8+
channelName: Unstable
9+
customerName: Community (Unstable)
10+
endpoint: https://replicated.app
11+
entitlements:
12+
domain:
13+
title: Domain
14+
value: ""
15+
valueType: String
16+
expires_at:
17+
description: License Expiration
18+
title: Expiration
19+
value: ""
20+
valueType: String
21+
levelId:
22+
isHidden: true
23+
title: License level
24+
value: 1
25+
valueType: Integer
26+
seats:
27+
title: User seats
28+
value: 10
29+
valueType: Integer
30+
isGitOpsSupported: true
31+
isNewKotsUiEnabled: true
32+
isSnapshotSupported: true
33+
licenseID: 26QkP1TBm7krczl8eYT6sDXLRRA
34+
licenseSequence: 1
35+
licenseType: community
36+
signature: eyJsaWNlbnNlRGF0YSI6ImV5SmhjR2xXWlhKemFXOXVJam9pYTI5MGN5NXBieTkyTVdKbGRHRXhJaXdpYTJsdVpDSTZJa3hwWTJWdWMyVWlMQ0p0WlhSaFpHRjBZU0k2ZXlKdVlXMWxJam9pWTI5dGJYVnVhWFI1ZFc1emRHRmliR1VpZlN3aWMzQmxZeUk2ZXlKc2FXTmxibk5sU1VRaU9pSXlObEZyVURGVVFtMDNhM0pqZW13NFpWbFVObk5FV0V4U1VrRWlMQ0pzYVdObGJuTmxWSGx3WlNJNkltTnZiVzExYm1sMGVTSXNJbU4xYzNSdmJXVnlUbUZ0WlNJNklrTnZiVzExYm1sMGVTQW9WVzV6ZEdGaWJHVXBJaXdpWVhCd1UyeDFaeUk2SW1kcGRIQnZaQ0lzSW1Ob1lXNXVaV3hKUkNJNklqSTFPVmxaUjJweVJFTndia1V3YmtkdFJqTjVTVXRKVmpONmN5SXNJbU5vWVc1dVpXeE9ZVzFsSWpvaVZXNXpkR0ZpYkdVaUxDSnNhV05sYm5ObFUyVnhkV1Z1WTJVaU9qRXNJbVZ1WkhCdmFXNTBJam9pYUhSMGNITTZMeTl5WlhCc2FXTmhkR1ZrTG1Gd2NDSXNJbVZ1ZEdsMGJHVnRaVzUwY3lJNmV5SmtiMjFoYVc0aU9uc2lkR2wwYkdVaU9pSkViMjFoYVc0aUxDSjJZV3gxWlNJNklpSXNJblpoYkhWbFZIbHdaU0k2SWxOMGNtbHVaeUo5TENKbGVIQnBjbVZ6WDJGMElqcDdJblJwZEd4bElqb2lSWGh3YVhKaGRHbHZiaUlzSW1SbGMyTnlhWEIwYVc5dUlqb2lUR2xqWlc1elpTQkZlSEJwY21GMGFXOXVJaXdpZG1Gc2RXVWlPaUlpTENKMllXeDFaVlI1Y0dVaU9pSlRkSEpwYm1jaWZTd2liR1YyWld4SlpDSTZleUowYVhSc1pTSTZJa3hwWTJWdWMyVWdiR1YyWld3aUxDSjJZV3gxWlNJNk1Td2lkbUZzZFdWVWVYQmxJam9pU1c1MFpXZGxjaUlzSW1selNHbGtaR1Z1SWpwMGNuVmxmU3dpYzJWaGRITWlPbnNpZEdsMGJHVWlPaUpWYzJWeUlITmxZWFJ6SWl3aWRtRnNkV1VpT2pFd0xDSjJZV3gxWlZSNWNHVWlPaUpKYm5SbFoyVnlJbjE5TENKcGMwZHBkRTl3YzFOMWNIQnZjblJsWkNJNmRISjFaU3dpYVhOVGJtRndjMmh2ZEZOMWNIQnZjblJsWkNJNmRISjFaU3dpYVhOT1pYZExiM1J6VldsRmJtRmliR1ZrSWpwMGNuVmxmWDA9IiwiaW5uZXJTaWduYXR1cmUiOiJleUpzYVdObGJuTmxVMmxuYm1GMGRYSmxJam9pYlZGWVZFbHpOMWd6YWpoYU1HRlBjbGhqVVZKVWJIVmlhVmxGTWtKSloxaHZOa1J0VGpOQlNrVk1OVGRhU1RadVVrTnFWRmhtYmtNeVNXNXBZVEprVW05cVRYaGlhMU41WW5kNmExZGpXSFIzUXpCQk9YWnNLM1pOZUVobWFVb3hhVFJLSzJ4TU5qTTNRVFkzUzJFMlZIQXhlbU5TUzA1TmVVcE9TM1ZCUW1OWFZpdExUMVJJZDBSc2VHcDVjbGxsUTNwRGMyOTBTSE0xZDA5S1N6VTBNblZDZUcwemMxWXJibEJqTDJoR2J6ZElSbkp6U0hWWGNrUkVUVzF1UVRrek9FaGljelpIWmpONlZIaERVMVIyUTA0MGVtZHFWblZwVkZKVVNVbHliMnRLY0ZkcVUweEZhMnBpVUcwM01YcG5LeTlOV2pkSlVtbGtSRkZPWWxadWNtMVFaMDl6Wmk5SE1qWkZOR3BHTVROVGVHSnBVbXhsV0dWbGJqazJjbTUwV21jeU1YaFlibHBUWm1KRU5IcHlRbU5vVVZKeVNreHpTVFJ6Y21ZNU5YQm1RMVZtZWpKbGVHMDJRbmQ1TDNabE4wbzFZa1ozUFQwaUxDSndkV0pzYVdOTFpYa2lPaUl0TFMwdExVSkZSMGxPSUZCVlFreEpReUJMUlZrdExTMHRMVnh1VFVsSlFrbHFRVTVDWjJ0eGFHdHBSemwzTUVKQlVVVkdRVUZQUTBGUk9FRk5TVWxDUTJkTFEwRlJSVUZ2Tlc1Nk9WbEVTMU5SUm1Wd2IySmFWakE1ZDF4dVdFdGxOM1JzVEZWVlZXNVRaVGd3TUVkRFMxUkRWRnB6Ym05cWRVSmhlV3BwUzJSM1drUXpWVlJLY1RCRWFXOUJjbGhWYTJoRU5HdG1kRE50UkZRM1JseHVZa0Z5ZUZkRVZYUnJOMWR6VmpGbWJFaHZjR3RpV0ZwSWNFaHlUM2QyV0daVFFraGlPVkZCYVVrMGQxcERkbWxDWmpkT01IVmxUV2xvVURKa2EzQnNiVnh1Tm1aSUx6RlRiR3BrWlZWU01XVkpjbVZXTjJSRFFYQmlhVzV5Tms5VVNERmpVMDQxVm1OWmVITjJVamhVT1RnclVVbEhMMFpXYW1NM2EzTnJTbUp5TTF4dWQwSlRkR2hqVWxoS2JrdHRaa296ZVdWeGQyZGxOa0ZCUTJkblYxWlFURFJHYW5ab05DOVJNblJ4V2tkQ2NXeFBXWFY0THpSSVYzWlRVMlZZUzFoMmNseHVZVVJhY2tOblNYRk9NWEJSUlZrd2FtMHlaa3hIWkU5RFJXaEZkbFJ4WkU0MGRXOW5iRTAxY2lzeWRVbFliblZFYUVvdlEzWkxkR2RUUldaSU0zQmtkVnh1Y2xGSlJFRlJRVUpjYmkwdExTMHRSVTVFSUZCVlFreEpReUJMUlZrdExTMHRMVnh1SWl3aWEyVjVVMmxuYm1GMGRYSmxJam9pWlhsS2VtRlhaSFZaV0ZJeFkyMVZhVTlwU2xSa2JWcHpUMGQwZFZKVWFHOVBWMlJYVERGUmQxZHRPVzlrVmswelZFTTVTMk51V1RGVWVtUkRaSHBLUWt3eU5WcGpWM013WTJwU1JsWlliRlZXV0ZKcVZGVTROVk50WkcxaE1HaGhWMVpHZVZOVlNrVmhhemwxVTFaT1RXRnJiM2xrUm14YVltazRlbVI2WkZCV1ZsWjBXbGRvU2xaRlRsQmpWRWw2VlRGR2EyTnNSalJWU0d4VVYwVnNiRk5YVG5oT1NHY3dZVmRHV2xGdVNUTlhhMmgxVTFWSk0yUkliR3ROVm1nMFUydFdibUpFU1hkaGExbHlZakZvZGxWVWJITmFXR3QyWkZka2RFOUZZekJqYTFwVVN6TndXbU5HVWxkaVUzUk9ZVWRPU1ZNeU5VNVNNRnBSVFd0YWRWRlRjekpqU0VKeVZUSm9WazlYTkhwWFZFcE1VMVJyZDJONlZqRlRWWEJaVGxWNGFsRnNZM2xNTUVWNVUwZFdUMDFHYXpSV1F6bHFZMFZLTVV4NmJHOVpibFV3VlVWd2NGcEZjelJVUjJoTFpWVTVTMlZZUW5GU1JVVXhXbGhqTkUxRVpFdGlla3BXVW01T2FGSnNUbmRUUkZwS1UxZHNVRk5WU1hwUFZrcERWMGhrU1dKR2J6SmhWRXBoVWpKbk1GTklVbWhWYlhSelYxWkNibFJzYUhKbGFrcEpXakJrYW1KWVZsVlhhMVY1WkZjMWFrMHljRkprVkVWNVpWYzBkbFZ0U2xOT1dGa3lUbXM1VkUxWVFtdFRiR2gzV2taU2NtTkdSVGxRVTBselNXMWtjMkl5U21oaVJYUnNaVlZzYTBscWIybFpiVkpzV2xSVk1rNVVXWGRaTWxwcFRrUk9hazlYU1hsUFIwcHRUMVJvYkZsWFRtaGFiVVV5VGtSWmFXWlJQVDBpZlE9PSJ9

install/licenses/Community.yaml

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
apiVersion: kots.io/v1beta1
2+
kind: License
3+
metadata:
4+
name: community
5+
spec:
6+
appSlug: gitpod
7+
channelID: 259YYBILXTa30S1Soli9YcWcPTb
8+
channelName: Stable
9+
customerName: Community
10+
endpoint: 'https://replicated.app'
11+
entitlements:
12+
domain:
13+
title: Domain
14+
value: ''
15+
valueType: String
16+
expires_at:
17+
description: License Expiration
18+
title: Expiration
19+
value: ''
20+
valueType: String
21+
levelId:
22+
isHidden: true
23+
title: License level
24+
value: 1
25+
valueType: Integer
26+
seats:
27+
title: User seats
28+
value: 10
29+
valueType: Integer
30+
isNewKotsUiEnabled: true
31+
isSemverRequired: true
32+
isSnapshotSupported: true
33+
licenseID: 273WZe6zHEcVHGOuIAviuyGXbgm
34+
licenseSequence: 2
35+
licenseType: community
36+
signature: >-
37+
eyJsaWNlbnNlRGF0YSI6ImV5SmhjR2xXWlhKemFXOXVJam9pYTI5MGN5NXBieTkyTVdKbGRHRXhJaXdpYTJsdVpDSTZJa3hwWTJWdWMyVWlMQ0p0WlhSaFpHRjBZU0k2ZXlKdVlXMWxJam9pWTI5dGJYVnVhWFI1SW4wc0luTndaV01pT25zaWJHbGpaVzV6WlVsRUlqb2lNamN6VjFwbE5ucElSV05XU0VkUGRVbEJkbWwxZVVkWVltZHRJaXdpYkdsalpXNXpaVlI1Y0dVaU9pSmpiMjF0ZFc1cGRIa2lMQ0pqZFhOMGIyMWxjazVoYldVaU9pSkRiMjF0ZFc1cGRIa2lMQ0poY0hCVGJIVm5Jam9pWjJsMGNHOWtJaXdpWTJoaGJtNWxiRWxFSWpvaU1qVTVXVmxDU1V4WVZHRXpNRk14VTI5c2FUbFpZMWRqVUZSaUlpd2lZMmhoYm01bGJFNWhiV1VpT2lKVGRHRmliR1VpTENKc2FXTmxibk5sVTJWeGRXVnVZMlVpT2pJc0ltVnVaSEJ2YVc1MElqb2lhSFIwY0hNNkx5OXlaWEJzYVdOaGRHVmtMbUZ3Y0NJc0ltVnVkR2wwYkdWdFpXNTBjeUk2ZXlKa2IyMWhhVzRpT25zaWRHbDBiR1VpT2lKRWIyMWhhVzRpTENKMllXeDFaU0k2SWlJc0luWmhiSFZsVkhsd1pTSTZJbE4wY21sdVp5SjlMQ0psZUhCcGNtVnpYMkYwSWpwN0luUnBkR3hsSWpvaVJYaHdhWEpoZEdsdmJpSXNJbVJsYzJOeWFYQjBhVzl1SWpvaVRHbGpaVzV6WlNCRmVIQnBjbUYwYVc5dUlpd2lkbUZzZFdVaU9pSWlMQ0oyWVd4MVpWUjVjR1VpT2lKVGRISnBibWNpZlN3aWJHVjJaV3hKWkNJNmV5SjBhWFJzWlNJNklreHBZMlZ1YzJVZ2JHVjJaV3dpTENKMllXeDFaU0k2TVN3aWRtRnNkV1ZVZVhCbElqb2lTVzUwWldkbGNpSXNJbWx6U0dsa1pHVnVJanAwY25WbGZTd2ljMlZoZEhNaU9uc2lkR2wwYkdVaU9pSlZjMlZ5SUhObFlYUnpJaXdpZG1Gc2RXVWlPakV3TENKMllXeDFaVlI1Y0dVaU9pSkpiblJsWjJWeUluMTlMQ0pwYzFOdVlYQnphRzkwVTNWd2NHOXlkR1ZrSWpwMGNuVmxMQ0pwYzA1bGQwdHZkSE5WYVVWdVlXSnNaV1FpT25SeWRXVXNJbWx6VTJWdGRtVnlVbVZ4ZFdseVpXUWlPblJ5ZFdWOWZRPT0iLCJpbm5lclNpZ25hdHVyZSI6ImV5SnNhV05sYm5ObFUybG5ibUYwZFhKbElqb2laMU5TWkRWSFNVbzJPVGhOUVVNeGVXYzBOVmsxYTJ4cGVUWlhMMWRsVlM5T1ZUWkNhbXR4U0V0TE5HZ3JlRkJSV1RkMldsVnlTak5VZVU5NE1WWTFZVXBEU0VKTFRFdG5WQ3RHZHpGMk9VOXVhVmhNU1doeFZtbzRMMmcxVkRoU1pIVldlRTl4WWsxMU9EaHdjblJDYzBoTU1YbFNUMWgwVlU1T1pVOHJPR1JLVW1odWMyRXdXRFF3U0M5RWJGcEtla2hyVkVSR2VYZFFZM2xDY1ZWU1JuQmpjVkpIVVdaYVluTkNhbTVCVGt0QllWSXZWMkZuYmt0eVkwUnlTWFpXU2pkT1RWbEdSVWhKUjNCRlQzcEJkelZWVkU5UVlVMTRhRmhKUkZWbmJVOUNTVEJTZVVWYU1ucFZlbEJFU21scFNpOVFXV3gzSzNGU05HaFJOakI0UzBZNVRGUmxTbnBsVFdFeFZIaDFUaTloTUdoNGVWWnlObXhyY2pBM2VrRjJhbXRoT0VoT1FsUTJRbE5zZUZKWGRWQkphblpvYW1SMVVYZFJZbHA0YjFkYU4zZHpUMUZFVkUxNGEzUTVSbXRPUW1WMldYVlJQVDBpTENKd2RXSnNhV05MWlhraU9pSXRMUzB0TFVKRlIwbE9JRkJWUWt4SlF5QkxSVmt0TFMwdExWeHVUVWxKUWtscVFVNUNaMnR4YUd0cFJ6bDNNRUpCVVVWR1FVRlBRMEZST0VGTlNVbENRMmRMUTBGUlJVRnZOVzU2T1ZsRVMxTlJSbVZ3YjJKYVZqQTVkMXh1V0V0bE4zUnNURlZWVlc1VFpUZ3dNRWREUzFSRFZGcHpibTlxZFVKaGVXcHBTMlIzV2tRelZWUktjVEJFYVc5QmNsaFZhMmhFTkd0bWRETnRSRlEzUmx4dVlrRnllRmRFVlhSck4xZHpWakZtYkVodmNHdGlXRnBJY0VoeVQzZDJXR1pUUWtoaU9WRkJhVWswZDFwRGRtbENaamRPTUhWbFRXbG9VREprYTNCc2JWeHVObVpJTHpGVGJHcGtaVlZTTVdWSmNtVldOMlJEUVhCaWFXNXlOazlVU0RGalUwNDFWbU5aZUhOMlVqaFVPVGdyVVVsSEwwWldhbU0zYTNOclNtSnlNMXh1ZDBKVGRHaGpVbGhLYmt0dFprb3plV1Z4ZDJkbE5rRkJRMmRuVjFaUVREUkdhblpvTkM5Uk1uUnhXa2RDY1d4UFdYVjRMelJJVjNaVFUyVllTMWgyY2x4dVlVUmFja05uU1hGT01YQlJSVmt3YW0weVpreEhaRTlEUldoRmRsUnhaRTQwZFc5bmJFMDFjaXN5ZFVsWWJuVkVhRW92UTNaTGRHZFRSV1pJTTNCa2RWeHVjbEZKUkVGUlFVSmNiaTB0TFMwdFJVNUVJRkJWUWt4SlF5QkxSVmt0TFMwdExWeHVJaXdpYTJWNVUybG5ibUYwZFhKbElqb2laWGxLZW1GWFpIVlpXRkl4WTIxVmFVOXBTbTVrU0VJd1dUTlNTbEpzVG1GVE1IQmFZVVJhYjFsc1pHOWxTR3h5VlZWNFVrOVdXVEJpVkd4UFVtdE9jVll3T1VSU2VUbE9VVmM0TWxGc1pFZFJXR3hYV2tkYWNsb3hUWHBYVXpsWVdWaG9kRkpyZURObFZscEpZa1U1TVZGck9UUlBWelZNWTFaS1FsUlVWWEpoUlU1ell6SmFWVlZZYUZOVE1uUlhUREpHVkZGWFpFVmlVM1JXWW01b2RGbHBkSGxhUlhCM1VqQTVjbE5zYUVSVVZXUkVVMGhrVjJKVVduZGpWVTVIWTI1ck5FMUlaek5pUmswMVZWVnNibGRXUlRSV1ZUZ3dVVzAxVlV3d2FHdE9WR2h1VmtOek1tRnVjRnBqVXpsaFdtMWFORmx0WkVwWGEwWkpWbGhHVjFsWVpHMWtXRWwyV21wV01GSkVTa3RXVjNBMFlVVmFWbUp0ZEhWaE0wSkdVMVpDVjFKSVFtRlpNMk55V21zNWJGSkZhR0ZPUmtwT1pIcEdkVnBYWjNwa01qbExVVzVzYTJGc2FEWkxNMFpWVm1zd2RrNHhTbXBOTVdoUVdtdEdhR05ZV1RSTlJ6VktWREp3ZEZKSVpESldlbHB3V1RCd01GUjZWakJqUkZrd1UwaFNhMkY2VlhkVk1VWlJVMGR3ZWxwWVFuTmhhMGsxVFVoQ2EwNUZjR0ZoTVVac1RrZFJNVmRxYkVSaFdHUnFWVzA1V2xWWGFEQmxhbHBzVkhwbmQyRXlhekpQUlRsNlpWYzBOV0pXVGxKT1J6QnlWMWRyY2sweVl6bFFVMGx6U1cxa2MySXlTbWhpUlhSc1pWVnNhMGxxYjJsWmJWSnNXbFJWTWs1VVdYZFpNbHBwVGtST2FrOVhTWGxQUjBwdFQxUm9iRmxYVG1oYWJVVXlUa1JaYVdaUlBUMGlmUT09In0=

0 commit comments

Comments
 (0)