From 1ab0d83941b5312d5c38e4cb65073339e74172ad Mon Sep 17 00:00:00 2001 From: bcjang Date: Thu, 22 Aug 2024 14:05:05 +0900 Subject: [PATCH] first commit --- admintool/.env | 6 + admintool/db/conf.d/my.cnf | 10 + admintool/db/initdb.d/create_table.sql | 420 +++ admintool/db/initdb.d/load_data.sql | 0 admintool/docker-compose.yml | 22 + db-docker/config/consul_config.json | 5 + db-docker/docker-compose.yml | 26 + docker-compose.yml | 69 + dynamodb_memory/docker-compose.yml | 33 + grafana-docker/LICENSE | 20 + grafana-docker/README.md | 75 + grafana-docker/configuration.env | 9 + grafana-docker/docker-compose.yml | 39 + grafana-docker/example.png | Bin 0 -> 331716 bytes .../grafana/dashboards/performance.json | 373 +++ .../grafana/provisioning/dashboards/all.yml | 11 + .../provisioning/datasources/influxdb.yml | 46 + grafana-docker/php-example/.gitignore | 1 + grafana-docker/php-example/composer.json | 6 + grafana-docker/php-example/composer.lock | 79 + grafana-docker/php-example/example.php | 48 + grafana-docker/telegraf/etc/telegraf.conf | 212 ++ kafka-docker | 1 + logging/docker-compose.yml | 43 + logging/fluentd/conf/fluent.conf | 23 + logging/mongodb/Dockerfile | 10 + logging/mongodb/init/init-mongo.js | 2 + logging/실행전주의사항.txt | 19 + opensearch/docker-compose.yml | 73 + opensearch/single-node/docker-compose.yml | 43 + rabbitmq/docker-compose.yml | 12 + readme.txt | 49 + redis-master-slave.yml | 22 + redis_master/redis.conf | 2276 +++++++++++++++++ 34 files changed, 4083 insertions(+) create mode 100644 admintool/.env create mode 100644 admintool/db/conf.d/my.cnf create mode 100644 admintool/db/initdb.d/create_table.sql create mode 100644 admintool/db/initdb.d/load_data.sql create mode 100644 admintool/docker-compose.yml create mode 100644 db-docker/config/consul_config.json create mode 100644 db-docker/docker-compose.yml create mode 100644 docker-compose.yml create mode 100644 dynamodb_memory/docker-compose.yml create mode 100644 grafana-docker/LICENSE create mode 100644 grafana-docker/README.md create mode 100644 grafana-docker/configuration.env create mode 100644 grafana-docker/docker-compose.yml create mode 100644 grafana-docker/example.png create mode 100644 grafana-docker/grafana/dashboards/performance.json create mode 100644 grafana-docker/grafana/provisioning/dashboards/all.yml create mode 100644 grafana-docker/grafana/provisioning/datasources/influxdb.yml create mode 100644 grafana-docker/php-example/.gitignore create mode 100644 grafana-docker/php-example/composer.json create mode 100644 grafana-docker/php-example/composer.lock create mode 100644 grafana-docker/php-example/example.php create mode 100644 grafana-docker/telegraf/etc/telegraf.conf create mode 160000 kafka-docker create mode 100644 logging/docker-compose.yml create mode 100644 logging/fluentd/conf/fluent.conf create mode 100644 logging/mongodb/Dockerfile create mode 100644 logging/mongodb/init/init-mongo.js create mode 100644 logging/실행전주의사항.txt create mode 100644 opensearch/docker-compose.yml create mode 100644 opensearch/single-node/docker-compose.yml create mode 100644 rabbitmq/docker-compose.yml create mode 100644 readme.txt create mode 100644 redis-master-slave.yml create mode 100644 redis_master/redis.conf diff --git a/admintool/.env b/admintool/.env new file mode 100644 index 0000000..c6c9fe0 --- /dev/null +++ b/admintool/.env @@ -0,0 +1,6 @@ +MYSQL_HOST=localhost +MYSQL_PORT=3306 +MYSQL_ROOT_PASSWORD=root! +MYSQL_DATABASE=user_stat +MYSQL_USER=khlee103 +MYSQL_PASSWORD=123 \ No newline at end of file diff --git a/admintool/db/conf.d/my.cnf b/admintool/db/conf.d/my.cnf new file mode 100644 index 0000000..1d3ea85 --- /dev/null +++ b/admintool/db/conf.d/my.cnf @@ -0,0 +1,10 @@ +[client] +default-character-set = utf8mb4 + +[mysql] +default-character-set = utf8mb4 + +[mysqld] +character-set-client-handshake = FALSE +character-set-server = utf8mb4 +collation-server = utf8mb4_unicode_ci \ No newline at end of file diff --git a/admintool/db/initdb.d/create_table.sql b/admintool/db/initdb.d/create_table.sql new file mode 100644 index 0000000..dc76ec4 --- /dev/null +++ b/admintool/db/initdb.d/create_table.sql @@ -0,0 +1,420 @@ +-- -------------------------------------------------------- +-- 호스트: 127.0.0.1 +-- 서버 버전: 10.11.6-MariaDB-1:10.11.6+maria~ubu2204 - mariadb.org binary distribution +-- 서버 OS: debian-linux-gnu +-- HeidiSQL 버전: 12.6.0.6765 +-- -------------------------------------------------------- + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET NAMES utf8 */; +/*!50503 SET NAMES utf8mb4 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + + +-- caliverse 데이터베이스 구조 내보내기 +CREATE DATABASE IF NOT EXISTS `caliverse` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin */; +USE `caliverse`; + +-- 테이블 caliverse.admin 구조 내보내기 +CREATE TABLE IF NOT EXISTS `admin` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `group_id` bigint(20) DEFAULT NULL, + `email` varchar(255) NOT NULL, + `name` varchar(255) NOT NULL, + `password` varchar(255) NOT NULL, + `status` varchar(255) NOT NULL, + `deleted` bit(1) NOT NULL DEFAULT b'0', + `pw_update_dt` datetime NOT NULL DEFAULT current_timestamp(), + `create_dt` datetime NOT NULL DEFAULT current_timestamp(), + `update_by` varchar(255) DEFAULT NULL, + `update_dt` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + KEY `group_id` (`group_id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; + +-- 테이블 데이터 caliverse.admin:~1 rows (대략적) 내보내기 admin pw : caliverse1! +INSERT INTO `admin` (`id`, `group_id`, `email`, `name`, `password`, `status`, `deleted`, `pw_update_dt`, `create_dt`, `update_by`, `update_dt`) VALUES + (1, 1, 'caliverse_adm@caliverse.io', 'admin', '$2a$10$YU8mg7ITQlFImlj0PwvvbuXQJK7WgEFlQ03T5mhrWrbHbbGiQ3sj2', 'PERMITTED', b'0', '2024-07-30 16:59:23', '2024-01-26 16:05:23', NULL, '2024-01-26 16:05:23'); + +-- 테이블 caliverse.admin_history 구조 내보내기 +CREATE TABLE IF NOT EXISTS `admin_history` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `admin_id` bigint(20) NOT NULL, + `password` varchar(255) NOT NULL, + PRIMARY KEY (`id`), + KEY `FK__admin` (`admin_id`) +) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='어드민 기존 패스워드 관리 테이블'; + +-- 테이블 데이터 caliverse.admin_history:~0 rows (대략적) 내보내기 + +-- 테이블 caliverse.admin_log 구조 내보내기 +CREATE TABLE IF NOT EXISTS `admin_log` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `admin_id` bigint(20) NOT NULL, + `name` varchar(255) NOT NULL, + `mail` varchar(255) NOT NULL, + `type` varchar(255) NOT NULL, + `content` longtext DEFAULT NULL, + `create_dt` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) USING BTREE, + KEY `admin_id` (`admin_id`) +) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; + +-- 테이블 데이터 caliverse.admin_log:~0 rows (대략적) 내보내기 + +-- 테이블 caliverse.authority 구조 내보내기 +CREATE TABLE IF NOT EXISTS `authority` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `auth_menu` varchar(255) NOT NULL, + `auth_name` varchar(255) NOT NULL, + `create_by` varchar(255) DEFAULT NULL, + `create_dt` datetime NOT NULL DEFAULT current_timestamp(), + `update_by` varchar(255) DEFAULT NULL, + `update_dt` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; + +-- 테이블 데이터 caliverse.authority:~31 rows (대략적) 내보내기 +INSERT INTO `authority` (`id`, `auth_menu`, `auth_name`, `create_by`, `create_dt`, `update_by`, `update_dt`) VALUES + (1, 'ADMINSEARCH', 'READ', NULL, '2023-08-23 17:49:41', NULL, '2023-08-23 17:49:41'), + (2, 'ADMINSEARCH', 'CONFIRM', NULL, '2023-08-23 20:25:00', NULL, '2023-08-23 20:25:00'), + (3, 'ADMINSEARCH', 'UPDATE', NULL, '2023-08-23 20:25:00', NULL, '2023-08-23 20:25:00'), + (4, 'ADMINSEARCH', 'DELETE', NULL, '2023-08-23 20:25:00', NULL, '2023-08-23 20:25:00'), + (5, 'ADMINLOGSEARCH', 'READ', NULL, '2023-08-23 20:32:32', NULL, '2023-08-23 20:32:32'), + (6, 'AUTHORITYSETTING', 'READ', NULL, '2023-08-23 20:32:44', NULL, '2023-08-23 20:32:44'), + (7, 'AUTHORITYSETTING', 'UPDATE', NULL, '2023-08-23 20:32:44', NULL, '2023-08-23 20:32:44'), + (8, 'AUTHORITYSETTING', 'DELETE', NULL, '2023-08-23 20:32:44', NULL, '2023-08-23 20:32:44'), + (9, 'USERINDICATORS', 'READ', NULL, '2023-09-04 10:48:12', NULL, '2023-09-04 10:48:12'), + (10, 'ECOMINDICATORS', 'READ', NULL, '2023-09-04 10:48:12', NULL, '2023-09-04 10:48:12'), + (11, 'USERSEARCH', 'READ', NULL, '2023-09-04 10:50:00', NULL, '2023-09-04 10:50:00'), + (12, 'USERSEARCH', 'UPDATE', NULL, '2023-09-04 10:50:00', NULL, '2023-09-04 10:50:00'), + (13, 'CONTENTSEARCH', 'READ', NULL, '2023-09-04 10:50:00', NULL, '2023-09-04 10:50:00'), + (14, 'GAMELOG', 'READ', NULL, '2023-09-04 10:51:28', NULL, '2023-09-04 10:51:28'), + (15, 'CRYPTO', 'READ', NULL, '2023-09-04 10:51:49', NULL, '2023-09-04 10:51:49'), + (16, 'INGAME', 'READ', NULL, '2023-09-04 10:52:11', NULL, '2023-09-04 10:52:11'), + (17, 'INGAME', 'UPDATE', NULL, '2023-09-04 10:52:11', NULL, '2023-09-04 10:52:11'), + (18, 'INGAME', 'DELETE', NULL, '2023-09-04 10:52:11', NULL, '2023-09-04 10:52:11'), + (19, 'WHITELIST', 'READ', NULL, '2023-09-04 10:52:59', NULL, '2023-09-04 10:52:59'), + (20, 'WHITELIST', 'CONFIRM', NULL, '2023-09-04 10:56:52', NULL, '2023-09-04 10:56:52'), + (21, 'WHITELIST', 'UPDATE', NULL, '2023-09-04 10:52:59', NULL, '2023-09-04 10:52:59'), + (22, 'MAIL', 'READ', NULL, '2023-09-04 10:52:59', NULL, '2023-09-04 10:52:59'), + (23, 'MAIL', 'UPDATE', NULL, '2023-09-04 10:52:59', NULL, '2023-09-04 10:52:59'), + (24, 'BLACKLIST', 'READ', NULL, '2023-09-04 10:52:59', NULL, '2023-09-04 10:52:59'), + (25, 'BLACKLIST', 'UPDATE', NULL, '2023-09-04 10:54:11', NULL, '2023-09-04 10:54:11'), + (26, 'REPORT', 'READ', NULL, '2023-09-04 10:54:24', NULL, '2023-09-04 10:54:24'), + (27, 'REPORT', 'UPDATE', NULL, '2023-09-04 10:54:32', NULL, '2023-09-04 10:54:32'), + (28, 'WHITELIST', 'DELETE', NULL, '2023-10-10 08:22:08', NULL, '2023-10-10 08:22:08'), + (29, 'MAIL', 'DELETE', NULL, '2023-10-10 08:54:38', NULL, '2023-10-10 08:54:38'), + (30, 'BLACKLIST', 'DELETE', NULL, '2023-10-10 08:54:57', NULL, '2023-10-10 08:54:57'), + (31, 'REPORT', 'DELETE', NULL, '2023-10-10 08:55:11', NULL, '2023-10-10 08:55:11'), + (32, 'ITEMLIST', 'READ', NULL, '2024-08-01 08:55:11', NULL, '2024-08-01 08:55:11'), + (33, 'ITEMLIST', 'UPDATE', NULL, '2024-08-01 08:55:11', NULL, '2024-08-01 08:55:11'), + (34, 'ITEMLIST', 'DELETE', NULL, '2024-08-01 08:55:11', NULL, '2024-08-01 08:55:11'); +-- 테이블 caliverse.black_list 구조 내보내기 +CREATE TABLE IF NOT EXISTS `black_list` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `guid` varchar(255) NOT NULL, + `nickname` varchar(50) NOT NULL, + `status` varchar(255) NOT NULL COMMENT '상태(제재중/기간만료/대기중)', + `type` varchar(255) NOT NULL COMMENT '제재 방식(접속제한/채팅제한)', + `sanctions` varchar(255) NOT NULL COMMENT '제재 사유', + `period` varchar(255) NOT NULL COMMENT '제재기간', + `deleted` bit(1) NOT NULL DEFAULT b'0', + `start_dt` datetime NOT NULL COMMENT '제재 시작 일자', + `end_dt` datetime NOT NULL COMMENT '제재 종료 일자', + `create_by` varchar(255) DEFAULT NULL, + `create_dt` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='이용자 제재 테이블'; + +-- 테이블 데이터 caliverse.black_list:~0 rows (대략적) 내보내기 + +-- 테이블 caliverse.caliverse_meta_data 구조 내보내기 +CREATE TABLE IF NOT EXISTS `caliverse_meta_data` ( + `file_name` varchar(256) NOT NULL, + `data_id` int(11) NOT NULL DEFAULT 0, + `json_data` longtext NOT NULL CHECK (json_valid(`json_data`)), + PRIMARY KEY (`file_name`,`data_id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; + +-- 테이블 데이터 caliverse.caliverse_meta_data:~0 rows (대략적) 내보내기 + +-- 테이블 caliverse.groups 구조 내보내기 +CREATE TABLE IF NOT EXISTS `groups` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `description` varchar(255) DEFAULT NULL, + `deleted` bit(1) NOT NULL DEFAULT b'0', + `create_by` varchar(255) DEFAULT NULL, + `create_dt` datetime NOT NULL DEFAULT current_timestamp(), + `update_by` varchar(255) DEFAULT NULL, + `update_dt` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; + +-- 테이블 데이터 caliverse.groups:~0 rows (대략적) 내보내기 +INSERT INTO `groups` (`id`, `name`, `description`, `deleted`, `create_by`, `create_dt`, `update_by`, `update_dt`) VALUES + (1, '전체관리자권한', '운영툴 전체 메뉴 사용 가능', b'0', 'khlee', '2024-01-26 14:29:20', 'khlee', '2024-01-26 14:29:29'), + (2, '기본권한', '기본 조회 기능만 사용 가능', b'0', 'khlee', '2024-01-26 14:29:20', 'khlee', '2024-01-26 14:29:29'); + +-- 테이블 caliverse.group_auth 구조 내보내기 +CREATE TABLE IF NOT EXISTS `group_auth` ( + `group_auth_id` bigint(20) NOT NULL AUTO_INCREMENT, + `group_id` bigint(20) NOT NULL, + `auth_id` bigint(20) NOT NULL, + PRIMARY KEY (`group_auth_id`), + KEY `FKsx1gx9q7k2thvs83qo1k4xj2o` (`auth_id`), + KEY `FK7iv0c1ovorc2qyb7gd0weu5hk` (`group_id`) +) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; + +-- 테이블 데이터 caliverse.group_auth:~31 rows (대략적) 내보내기 +INSERT INTO `group_auth` (`group_auth_id`, `group_id`, `auth_id`) VALUES + (1, 1, 1), + (2, 1, 2), + (3, 1, 3), + (4, 1, 4), + (5, 1, 5), + (6, 1, 6), + (7, 1, 7), + (8, 1, 8), + (9, 1, 9), + (10, 1, 10), + (11, 1, 11), + (12, 1, 12), + (13, 1, 13), + (14, 1, 14), + (15, 1, 15), + (16, 1, 16), + (17, 1, 17), + (18, 1, 18), + (19, 1, 19), + (20, 1, 20), + (21, 1, 21), + (22, 1, 22), + (23, 1, 23), + (24, 1, 24), + (25, 1, 25), + (26, 1, 26), + (27, 1, 27), + (28, 1, 28), + (29, 1, 29), + (30, 1, 30), + (31, 1, 31), + (32, 1, 32), + (33, 1, 33), + (34, 1, 34), + (35, 2, 11), + (36, 2, 13), + (37, 2, 14), + (38, 2, 15); + +-- 테이블 caliverse.item 구조 내보내기 +CREATE TABLE IF NOT EXISTS `item` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `mail_id` bigint(20) NOT NULL, + `reward_group_id` varchar(255) NOT NULL, + `item_cnt` bigint(20) NOT NULL, + PRIMARY KEY (`id`), + KEY `FK_item_mail` (`mail_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='우편 정보 아이템 테이블'; + +-- 테이블 데이터 caliverse.item:~0 rows (대략적) 내보내기 + +-- 테이블 caliverse.mail 구조 내보내기 +CREATE TABLE IF NOT EXISTS `mail` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `target` varchar(255) NOT NULL COMMENT '수신 대상(guid/닉네임/파일명)', + `receive_type` varchar(255) NOT NULL COMMENT '수신 대상(단일/복수)', + `user_type` varchar(255) NOT NULL COMMENT '유저 타입(guid/닉네임)', + `is_reserve` bit(1) NOT NULL DEFAULT b'0' COMMENT '예약 발송 여부', + `send_type` varchar(255) NOT NULL COMMENT '발송 방식', + `send_status` varchar(255) NOT NULL DEFAULT 'WAIT' COMMENT '발송 상태', + `mail_type` varchar(255) NOT NULL COMMENT '우편 타입', + `deleted` bit(1) NOT NULL DEFAULT b'0', + `send_dt` datetime DEFAULT NULL, + `create_by` varchar(255) DEFAULT NULL, + `create_dt` datetime NOT NULL DEFAULT current_timestamp(), + `update_by` varchar(255) DEFAULT NULL, + `update_dt` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='우편 관리'; + +-- 테이블 데이터 caliverse.mail:~0 rows (대략적) 내보내기 + +-- 테이블 caliverse.message 구조 내보내기 +CREATE TABLE IF NOT EXISTS `message` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `target_id` bigint(20) NOT NULL, + `type` varchar(50) NOT NULL, + `title` varchar(255) DEFAULT NULL, + `content` longtext NOT NULL, + `language` varchar(50) NOT NULL DEFAULT 'ko', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='공지사항& 우편 메시지 내용\r\n'; + +-- 테이블 데이터 caliverse.message:~0 rows (대략적) 내보내기 + +-- 테이블 caliverse.notice 구조 내보내기 +CREATE TABLE IF NOT EXISTS `notice` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `message_type` varchar(255) NOT NULL DEFAULT 'CHATTING', + `send_dt` datetime NOT NULL DEFAULT current_timestamp(), + `is_repeat` bit(1) NOT NULL DEFAULT b'0' COMMENT '반복 발송', + `repeat_Type` varchar(255) DEFAULT NULL COMMENT '반복 타입', + `end_dt` datetime DEFAULT NULL COMMENT '종료 일자', + `repeat_dt` time DEFAULT NULL COMMENT '반복 발송 시간', + `repeat_cnt` bigint(20) DEFAULT 0 COMMENT '반복 횟수', + `send_cnt` bigint(20) DEFAULT 0 COMMENT '송출완료 횟수', + `deleted` bit(1) NOT NULL DEFAULT b'0', + `create_by` varchar(255) DEFAULT NULL, + `create_dt` datetime NOT NULL DEFAULT current_timestamp(), + `update_by` varchar(255) DEFAULT NULL, + `update_dt` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='인게임 메시지(공지사항)'; + +-- 테이블 데이터 caliverse.notice:~0 rows (대략적) 내보내기 + +-- 테이블 caliverse.token 구조 내보내기 +CREATE TABLE IF NOT EXISTS `token` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `admin_id` bigint(20) NOT NULL, + `expired` bit(1) NOT NULL, + `revoked` bit(1) NOT NULL DEFAULT b'0', + `token` varchar(255) DEFAULT NULL, + `token_type` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `admin_id` (`admin_id`) +) ENGINE=InnoDB AUTO_INCREMENT=248 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; + +-- 테이블 데이터 caliverse.token:~12 rows (대략적) 내보내기 +INSERT INTO `token` (`id`, `admin_id`, `expired`, `revoked`, `token`, `token_type`) VALUES + (247, 1, b'0', b'0', 'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJraGxlZTEwM0Bsb3R0ZS5uZXQiLCJpYXQiOjE3MDcyNzM0ODMsImV4cCI6MTcwNzM1OTg4M30.WC5xFxyVaMAOQ7qr8SLP0VQqLBd4zscYCfhXhwpxOxc', 'BEARER'); + +-- 테이블 caliverse.white_list 구조 내보내기 +CREATE TABLE IF NOT EXISTS `white_list` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `guid` varchar(50) NOT NULL, + `nickname` varchar(50) NOT NULL, + `status` varchar(255) NOT NULL DEFAULT 'REJECT', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '삭제 여부', + `create_by` varchar(255) DEFAULT NULL, + `create_dt` datetime NOT NULL DEFAULT current_timestamp(), + `update_by` varchar(255) DEFAULT NULL, + `update_dt` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; + +-- 테이블 데이터 caliverse.white_list:~0 rows (대략적) 내보내기 + +/*!40103 SET TIME_ZONE=IFNULL(@OLD_TIME_ZONE, 'system') */; +/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; +/*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40111 SET SQL_NOTES=IFNULL(@OLD_SQL_NOTES, 1) */; + +-- Autogenerated: do not edit this file + +CREATE TABLE IF NOT EXISTS BATCH_JOB_INSTANCE ( + JOB_INSTANCE_ID BIGINT NOT NULL PRIMARY KEY , + VERSION BIGINT , + JOB_NAME VARCHAR(100) NOT NULL, + JOB_KEY VARCHAR(32) NOT NULL, + constraint JOB_INST_UN unique (JOB_NAME, JOB_KEY) +) ENGINE=InnoDB; + +CREATE TABLE IF NOT EXISTS BATCH_JOB_EXECUTION ( + JOB_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY , + VERSION BIGINT , + JOB_INSTANCE_ID BIGINT NOT NULL, + CREATE_TIME DATETIME(6) NOT NULL, + START_TIME DATETIME(6) DEFAULT NULL , + END_TIME DATETIME(6) DEFAULT NULL , + STATUS VARCHAR(10) , + EXIT_CODE VARCHAR(2500) , + EXIT_MESSAGE VARCHAR(2500) , + LAST_UPDATED DATETIME(6), + constraint JOB_INST_EXEC_FK foreign key (JOB_INSTANCE_ID) + references BATCH_JOB_INSTANCE(JOB_INSTANCE_ID) +) ENGINE=InnoDB; + +CREATE TABLE IF NOT EXISTS BATCH_JOB_EXECUTION_PARAMS ( + JOB_EXECUTION_ID BIGINT NOT NULL , + PARAMETER_NAME VARCHAR(100) NOT NULL , + PARAMETER_TYPE VARCHAR(100) NOT NULL , + PARAMETER_VALUE VARCHAR(2500) , + IDENTIFYING CHAR(1) NOT NULL , + constraint JOB_EXEC_PARAMS_FK foreign key (JOB_EXECUTION_ID) + references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID) +) ENGINE=InnoDB; + +CREATE TABLE IF NOT EXISTS BATCH_STEP_EXECUTION ( + STEP_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY , + VERSION BIGINT NOT NULL, + STEP_NAME VARCHAR(100) NOT NULL, + JOB_EXECUTION_ID BIGINT NOT NULL, + CREATE_TIME DATETIME(6) NOT NULL, + START_TIME DATETIME(6) DEFAULT NULL , + END_TIME DATETIME(6) DEFAULT NULL , + STATUS VARCHAR(10) , + COMMIT_COUNT BIGINT , + READ_COUNT BIGINT , + FILTER_COUNT BIGINT , + WRITE_COUNT BIGINT , + READ_SKIP_COUNT BIGINT , + WRITE_SKIP_COUNT BIGINT , + PROCESS_SKIP_COUNT BIGINT , + ROLLBACK_COUNT BIGINT , + EXIT_CODE VARCHAR(2500) , + EXIT_MESSAGE VARCHAR(2500) , + LAST_UPDATED DATETIME(6), + constraint JOB_EXEC_STEP_FK foreign key (JOB_EXECUTION_ID) + references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID) +) ENGINE=InnoDB; + +CREATE TABLE IF NOT EXISTS BATCH_STEP_EXECUTION_CONTEXT ( + STEP_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY, + SHORT_CONTEXT VARCHAR(2500) NOT NULL, + SERIALIZED_CONTEXT TEXT , + constraint STEP_EXEC_CTX_FK foreign key (STEP_EXECUTION_ID) + references BATCH_STEP_EXECUTION(STEP_EXECUTION_ID) +) ENGINE=InnoDB; + +CREATE TABLE IF NOT EXISTS BATCH_JOB_EXECUTION_CONTEXT ( + JOB_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY, + SHORT_CONTEXT VARCHAR(2500) NOT NULL, + SERIALIZED_CONTEXT TEXT , + constraint JOB_EXEC_CTX_FK foreign key (JOB_EXECUTION_ID) + references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID) +) ENGINE=InnoDB; + +CREATE TABLE IF NOT EXISTS BATCH_STEP_EXECUTION_SEQ ( + ID BIGINT NOT NULL, + UNIQUE_KEY CHAR(1) NOT NULL, + constraint UNIQUE_KEY_UN unique (UNIQUE_KEY) +) ENGINE=InnoDB; + +-- 테이블 데이터 caliverse.BATCH_STEP_EXECUTION_SEQ:~0 rows (대략적) 내보내기 +INSERT INTO BATCH_STEP_EXECUTION_SEQ (ID, UNIQUE_KEY) select * from (select 0 as ID, '0' as UNIQUE_KEY) as tmp where not exists(select * from BATCH_STEP_EXECUTION_SEQ); + +CREATE TABLE IF NOT EXISTS BATCH_JOB_EXECUTION_SEQ ( + ID BIGINT NOT NULL, + UNIQUE_KEY CHAR(1) NOT NULL, + constraint UNIQUE_KEY_UN unique (UNIQUE_KEY) +) ENGINE=InnoDB; + +-- 테이블 데이터 caliverse.BATCH_JOB_EXECUTION_SEQ:~0 rows (대략적) 내보내기 +INSERT INTO BATCH_JOB_EXECUTION_SEQ (ID, UNIQUE_KEY) select * from (select 0 as ID, '0' as UNIQUE_KEY) as tmp where not exists(select * from BATCH_JOB_EXECUTION_SEQ); + +CREATE TABLE IF NOT EXISTS BATCH_JOB_SEQ ( + ID BIGINT NOT NULL, + UNIQUE_KEY CHAR(1) NOT NULL, + constraint UNIQUE_KEY_UN unique (UNIQUE_KEY) +) ENGINE=InnoDB; + +-- 테이블 데이터 caliverse.BATCH_JOB_SEQ:~0 rows (대략적) 내보내기 +INSERT INTO BATCH_JOB_SEQ (ID, UNIQUE_KEY) select * from (select 0 as ID, '0' as UNIQUE_KEY) as tmp where not exists(select * from BATCH_JOB_SEQ); \ No newline at end of file diff --git a/admintool/db/initdb.d/load_data.sql b/admintool/db/initdb.d/load_data.sql new file mode 100644 index 0000000..e69de29 diff --git a/admintool/docker-compose.yml b/admintool/docker-compose.yml new file mode 100644 index 0000000..fcc74fe --- /dev/null +++ b/admintool/docker-compose.yml @@ -0,0 +1,22 @@ +version: '3.7' + +services: + db: + image: mariadb:10 + container_name: admin-mariadb + ports: + - 3306:3306 + volumes: + - ./db/conf.d:/etc/mysql/conf.d + - ./db/data:/var/lib/mysql + - ./db/initdb.d:/docker-entrypoint-initdb.d + env_file: .env + environment: + TZ: UTC + networks: + - backend + restart: always + + +networks: + backend: diff --git a/db-docker/config/consul_config.json b/db-docker/config/consul_config.json new file mode 100644 index 0000000..2572d47 --- /dev/null +++ b/db-docker/config/consul_config.json @@ -0,0 +1,5 @@ +{ + "Redis": "127.0.0.1:6379", + "Dynamodb": "http://localhost:8000", + "Kafka": "localhost:9092" +} diff --git a/db-docker/docker-compose.yml b/db-docker/docker-compose.yml new file mode 100644 index 0000000..5a40996 --- /dev/null +++ b/db-docker/docker-compose.yml @@ -0,0 +1,26 @@ +version: '2' +services: + consul: + image: consul:latest + ports: + - "8500:8500" + + consulsetup: + image: consul:latest + depends_on: + - consul + restart: "no" + volumes: + - ./config/consul_config.json:/etc/consul_config.json + entrypoint: + ["sh", "-c", "curl --request PUT --data @/etc/consul_config.json http://consul:8500/v1/kv/config"] + + redis: + image: redis:latest + ports: + - "6379:6379" + + dynamodb: + image: amazon/dynamodb-local + ports: + - "8000:8000" diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..9915b37 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,69 @@ +version: '4.29' +services: + + redis-master: + restart: always + image: redis:7.0.4 + command: "redis-server --requirepass KT-i5#i%-%LxKfZ5YJj6" + container_name: redis + volumes: + - "./redis_master:/home/redis_master/data" + ports: + - '6379:6379' + working_dir: /home/redis_master + + rabbitmq: + restart: always + image: 'rabbitmq:3-management-alpine' + container_name: rabbitmq-stream + ports: + - "5672:5672" + - "15672:15672" + environment: + RABBITMQ_ERLANG_COOKIE: "RabbitMQ-My-Cookies" + RABBITMQ_DEFAULT_USER: "admin" + RABBITMQ_DEFAULT_PASS: "admin" + + dynamodb-local: + restart: always + command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data" + image: amazon/dynamodb-local + container_name: dynamodb-local + ports: + - "8000:8000" + volumes: + - "./dynamodb:/home/dynamodblocal/data" + working_dir: /home/dynamodblocal + + dynamodb-admin: + restart: always + image: aaronshaf/dynamodb-admin + ports: + - "8001:8001" + environment: + DYNAMO_ENDPOINT: "http://dynamodb-local:8000" + AWS_REGION: "us-west-2" + AWS_ACCESS_KEY_ID: local + AWS_SECRET_ACCESS_KEY: local + depends_on: + - dynamodb-local + mongodb: + image: mongo + container_name: mongodb + restart: always + ports: + - 27017:27017 + volumes: + - ./mongodb_data:/data/db + environment: + - MONGO_INITDB_ROOT_USERNAME=root + - MONGO_INITDB_ROOT_PASSWORD=root + mongo-express: + image: mongo-express + restart: always + ports: + - 27117:8081 + environment: + ME_CONFIG_MONGODB_URL: mongodb://root:root@mongodb:27017 + depends_on: + - mongodb diff --git a/dynamodb_memory/docker-compose.yml b/dynamodb_memory/docker-compose.yml new file mode 100644 index 0000000..e229bc2 --- /dev/null +++ b/dynamodb_memory/docker-compose.yml @@ -0,0 +1,33 @@ +version: '3.7' +services: + + redis-master: + image: redis:7.0.4 + command: "redis-server --requirepass KT-i5#i%-%LxKfZ5YJj6" + container_name: redis + volumes: + - "./redis_master:/home/redis_master/data" + ports: + - '6379:6379' + working_dir: /home/redis_master + + dynamodb: + command: "-jar DynamoDBLocal.jar -inMemory" + image: amazon/dynamodb-local:2.0.0 + container_name: dynamodb-local + ports: + - "8000:8000" + volumes: + - "./dynamodb:/home/dynamodblocal/data" + working_dir: /home/dynamodblocal + + rabbitmq: + image: 'rabbitmq:3-management-alpine' + container_name: rabbitmq-stream + ports: + - "5672:5672" + - "15672:15672" + environment: + RABBITMQ_ERLANG_COOKIE: "RabbitMQ-My-Cookies" + RABBITMQ_DEFAULT_USER: "admin" + RABBITMQ_DEFAULT_PASS: "admin" \ No newline at end of file diff --git a/grafana-docker/LICENSE b/grafana-docker/LICENSE new file mode 100644 index 0000000..9ac910d --- /dev/null +++ b/grafana-docker/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2021 Benjamin Cremer + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/grafana-docker/README.md b/grafana-docker/README.md new file mode 100644 index 0000000..9b0ff2c --- /dev/null +++ b/grafana-docker/README.md @@ -0,0 +1,75 @@ +# Example Docker Compose project for Telegraf, InfluxDB and Grafana + +This an example project to show the TIG (Telegraf, InfluxDB and Grafana) stack. + +![Example Screenshot](./example.png?raw=true "Example Screenshot") + +## Start the stack with docker compose + +```bash +$ docker-compose up +``` + +## Services and Ports + +### Grafana +- URL: http://localhost:3000 +- User: admin +- Password: admin + +### Telegraf +- Port: 8125 UDP (StatsD input) + +### InfluxDB +- Port: 8086 (HTTP API) +- User: admin +- Password: admin +- Database: influx + + +Run the influx client: + +```bash +$ docker-compose exec influxdb influx -execute 'SHOW DATABASES' +``` + +Run the influx interactive console: + +```bash +$ docker-compose exec influxdb influx + +Connected to http://localhost:8086 version 1.8.0 +InfluxDB shell version: 1.8.0 +> +``` + +[Import data from a file with -import](https://docs.influxdata.com/influxdb/v1.8/tools/shell/#import-data-from-a-file-with-import) + +```bash +$ docker-compose exec -w /imports influxdb influx -import -path=data.txt -precision=s +``` + +## Run the PHP Example + +The PHP example generates random example metrics. The random metrics are beeing sent via UDP to the telegraf agent using the StatsD protocol. + +The telegraf agents aggregates the incoming data and perodically persists the data into the InfluxDB database. + +Grafana connects to the InfluxDB database and is able to visualize the incoming data. + +```bash +$ cd php-example +$ composer install +$ php example.php +Sending Random metrics. Use Ctrl+C to stop. +..........................^C +Runtime: 0.88382697105408 Seconds +Ops: 27 +Ops/s: 30.548965899738 +Killed by Ctrl+C +``` + +## License + +The MIT License (MIT). Please see [License File](LICENSE) for more information. + diff --git a/grafana-docker/configuration.env b/grafana-docker/configuration.env new file mode 100644 index 0000000..7da5a24 --- /dev/null +++ b/grafana-docker/configuration.env @@ -0,0 +1,9 @@ +# Grafana options +GF_SECURITY_ADMIN_USER=admin +GF_SECURITY_ADMIN_PASSWORD=admin +GF_INSTALL_PLUGINS= + +# InfluxDB options +INFLUXDB_DB=influx +INFLUXDB_ADMIN_USER=admin +INFLUXDB_ADMIN_PASSWORD=admin diff --git a/grafana-docker/docker-compose.yml b/grafana-docker/docker-compose.yml new file mode 100644 index 0000000..b5c6a33 --- /dev/null +++ b/grafana-docker/docker-compose.yml @@ -0,0 +1,39 @@ +version: '3.6' +services: + telegraf: + image: telegraf:1.18-alpine + volumes: + - ./telegraf/etc/telegraf.conf:/etc/telegraf/telegraf.conf:ro + depends_on: + - influxdb + links: + - influxdb + ports: + - '8125:8125/udp' + + influxdb: + image: influxdb:1.8-alpine + env_file: configuration.env + ports: + - '8086:8086' + volumes: + - ./:/imports + - influxdb_data:/var/lib/influxdb + + grafana: + image: grafana/grafana:8.0.2 + depends_on: + - influxdb + env_file: configuration.env + links: + - influxdb + ports: + - '3000:3000' + volumes: + - grafana_data:/var/lib/grafana + - ./grafana/provisioning/:/etc/grafana/provisioning/ + - ./grafana/dashboards/:/var/lib/grafana/dashboards/ + +volumes: + grafana_data: {} + influxdb_data: {} diff --git a/grafana-docker/example.png b/grafana-docker/example.png new file mode 100644 index 0000000000000000000000000000000000000000..858c04aec2805ec1143134f0a0c04995cf84d3dc GIT binary patch literal 331716 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 z zY`gw56N9bUzVrUk_9_%}i-7&v5_5aw&AiZdxvG+r-pj zxlF6Jt-igqsgz?`GjWuhE|B}cbS(pC%afg)J8hlozN>P`43HOd>F+&r^?Bio>-{t1 z=TGme&abOVZr5*gp#4aNkw5PInZjtVQ)51P6n=g6I2=_nwXoolcG*$s?r0(6Yq5Oi z?Y`-+Kr7;UH*Da0^&c|wOIL3 zNq=dhQLUK~qr&ZYUmk`a;OJ2HP~`1@*~FgNw(i~LeYI7auck2uvSns*W?p{2R?b0+ zL^$JfZQ*uxVWrcMXEGksPI%H++i9P@tY#`elWqX3OzPzAcxrnP?`IS7q)fHplb(G8sF+h&H^f?z3`Z^JqDlV$W zpd;`kP3h@Uk#9pP?rt#r@WNx^@bAXtM{x$n=KcA)MwPYwFMFK^tNSVckMW<&#m3^n z+TPcno73C(&gX3!4eV@3)<4@dHrm@-SsZRV2sh1`{||{QBNx}N-p&{|yoTX7`6?f5 zEAcb!y6(UAUynEGyEKn1@j7=i#rAsWSsupQaV5U)mE#mAZI`gM)+{_zjziI7_Wz`@ zeA&ObaJJd5)7>`?JME3RrG<@pige07B-L?VPsI%2e8d^>sJLB-vMP=2F7u}JfXcVT> zJvt7x9bdzcL2q>N(4^C5|Fg`sFgn}H~?3|^6VkixX2(*VAG~;IgLUepgwg$W3=a?uc&3I@j zR=Pt_(40_waWn{aL6UsYzy|6}*EJVVXf%YKNxcCT12w3jYywX(+_ZUnrbM_>41=P= zQl1Dj1kJQzmjlea+)M~8ld8T52r~lH$r9m6ovu#cjxM#Y(No7HZe=c5b;k}}(!<(U zsHiDR+vVWepB4&fL)2W#%q{z^MxFTV4{0|vD=6$hN@$pqXB`m3f2JT#B8J2Q1wiyR zZe#r;_k;>%nbuc_<<)lSFt88in@D8~7kBasCr7r#+5_d8Pg<=p;!dpN<(X@!m?bXU ze9Yo;k4%GMPi;7;?-q7p8Wo;i3BuiWfGm^*Ojru8AoR(m=xl&bFr~qeu@Vbclh^>n zw@PG-8nMx{pdkCqhkh^zApm#8S>-{sZIF=t9zBNL1RhR`aGN(h&N+q&2`;`K-Jb~Q z^JzYNP`5p;PlmQ0IJcYTVTOjQEl zeEaP;wgS0F-v}?#d^1i2{J%t@nfAj8J#{zR%}(*%>7XgYWAHt9aUWB*uez@8;TiBf z{;8dJsh#uJ*YG;L>~&e>wzr&IEy5~A_uXm`$k})KE~XghpCck7W^=u76GyS)!4{ZQa_JL$pNT5LOd+|~?!N?ZGI-(F{pX>s|Q z_ZG*nTl?4QwVsLP^^m^l{W_**Ccu-x90}36d2s^!L0FM;!X@F4X^Y$CwQQ`b()|&L zt|rdHgL69?ipbkALuGI5<5Y9~(CzmzPzYn}ytLiWqz2gJ{91ZDtGStT|GpE8kI)ob z6bD{)ZJpn{PUf}Utf~0(H+UUqT(#R79G~soj3lS}-yqs!7>oDAU3i}{N~GFr&2{>E zR`Cyh?ENdefBQ85DvhLRqmvI8zxqCXp;tD1r4JX|X?i8y z`TWy2uUvP#k3x&nercVq7!YWC-|YUJ)#-g$#WY?vb;;TX;>K@B{CAh+Gh1$Hb#o91 z(TU4x*GWn`rh@7lp7Zu55)9#!^?t;7DbP))lDh5hSN7@%;(Pm0{N?TUp;yk~&wL#A zGOJ?GdtXpcKwL%hc==IInQCj`-fy8%#F|2LQ2eUU{j3rGY5^I6#aWkA{RHIa7lw=F zy^|bRy!QWk1GrtTh2~!Eh7%4Ar^*&tLZ0AEbPc!L2iW*e=PHaDHsBlT+QLP<`pK~nXiPjeM7KBYIdh9{&jSEN`06-&&2rvKQ zSe2_w={i663;g=war9*2bTWOu$T&|Bfqvfhw{lPhK6vga(QBJ-3XDN=eRZ4^GRkq9 z`s>kmYyf;!Q##q9VsquW-yf6BdhLgoUGpV8$3qBE~hYQS;eBOxcGP;YQmU6VXfm-tzi{>ks!+-*EnoVchp`o z>tUkka>Y!3WYO5$JT=Th2!hPW4JZoz!wCCzpH|cV_q%d@XP1H{0E3<-^u!<#p^cep zd}EeApi+&|F~H-cJ(t1mrzbDm4HO=7{0DLI<*o+48O}|yFzVthZfexa%2?$ed3RB+ z>G=et`u+FWX(j1fu4S4mdRKX-txgSG9 zn{_W38P8dw)MgTx7XsT-re0bQ=(3=8Ehu8YA56<0hwI18tPH>Cu)@_LyOA>VN z;lWEl={^=0&4uNQ=`Kg(mP;!4_#Hbn><0)o@N8^PClCowM?ltWQ2V`FP5X{m>L zm&I`vl^Y`W4k^Z31KD4Jaiu_quaX=3sRPdQgn14g?deTHm+-OcJZvm5 zW1eoH$Ge0}o{|I2MHi+P7Af`r$JSQ{)e$snAKcyDEx5Z|aJLZL9fJD-g1fsD+}+)s zkb?w=;O-8WzD)2UqgDL9<+TYk{C(BVt_H~C7&p(Wm>k4>NB*HJHwtCKg1k{a&G(0piOCQ+~v zpARa&KR-qOfpH>*8!(9lAj31RSe~+@9j6snmX#s)U_hOkmnSQEG zk&kj>h8;f4sS~b(uG7mF=S_$GTu`@4r=$}^y|XUfbf@6 zRC37B>Qtt=?{fQ{vo&P>de!o}Xu$b$qV#$Nql5vl<>~f#*76@%^xs|fe!uK_T8c_d z7&5;7?eNf7Gj;#c;C~-57&(3v;Qn@R(Dc0j{-Pz6Z1C%38_ME#wdvBhS(^bn@^W)F z1rs}R$hZ#G(Pw0s7TnN^Q7?PIF=Qa(F>kwl&2!`abyM3hhN8TK;H^|n+Rcq=xi?EY z1QAJ|dzKWe*R6ov0xAAe6F{bDFh@JK^>yi&sF@choA*o@KXYmy@3N6BR97LUDWlJm zdG~4l*3t1s){YZ6x}<}icwf{UmI~Jc`RXdUj&jJ_R+n;RIRc~%-%8tU7g=W#D)K_o zARBVpsw2lF#)z0|JVS=!X#1(8>GZy97yemm%gy!8ZLR;&vBT@da*41eq4l-hYn>${ z52ovqvhxgR>jwotZ{*B5kg495rp>;xm^8pr1_w}N3pD+)-toK{^x6`dJYSIv?+h4P z=J8P6-9!~>0oh8=A68kkz+!^evhDG*Cvs)qd-6*gcF_Skk(Yn-;A81W_PXnP?bZ0* z3l6bxn&xI!Av0Bt1c5=aoAX)$h7~xWjv~JEf^}|J*Q1CW5Ms%&*MLCtBZkpyo*5Y9 zdEfJ~$@BfzeHtm3Rp3<^;^!v31iuMaIQ0tXUIxik1l2t1DkW*LQvX6=5O3yH0pCl) zBmJ(SM#35z4QQ{aS}VBf*l2Srob=x82So!xdDmal$xUH!pmoBnBGw)qw>(^H!Q(jM z=7#t;_z3lYj{&!KAGw)WYLJ8+;fD}kNT9imHFV+{%JXBZyNJNtk{7kK&OFN3@8@=E zSlN7cc}WDWua`}voQiPxFlA;hNX)iS1a3%49%uJgEC9T@U;X#W>=ZkEN92AQi*8Gr z-##sNo}3ht_*3?jE)OA$9?jU;eZVT!_j%)y;QiqF-M{+WulKT~Q9Fq$@B?Mq3~WCq zMZht;Ze6ChqWFo`6~gPA5JGF-$FFqX_j$P{StveW7V35^zy~ui-2PJ^A~6pmw;@-w zsI&Rj%nly280a{`MEq5TT`De2aJVn6%OT|Dsin%g-0AxsxNECu(^5mr6(h<*Ablt^Ljs5p^PaJ%;}n= zKqDMIyOfldDF5kB@_ctSZp4-#Wq;TPU)d^Csllw6-Q%KdKjtc2v zLVL)AK4U=q@_wVy2hj3Y!n&Eo^>AYO_1*oR$iy3hDi}ETd9@uDI@a9}*EU?wOY`t6RBhq{BB56}I6KQ^YF}Imh zfyd8|iNbs{Vcb5nP-N9*PqP%_>OQOcyldtlGDEL3t>Fs;w$gjQ(%Z4YK<@W78N)hl_yggp|KQBj-W~w<&0gh~E$;NG zZmqV@jl?!kN9OLjpU_FDX#Z=f zOqB%>*BvHt&IC@6=}#}4bB(Bc^!DZjN;CGg8+cadFd$JGwYA!U?PO0_zWQwDT=mU- z9;X|hD-~)!ZqrFsU7~?oHlq?X?T4pK;q%azHd^(+f5?nQy>L$w9hbGq}sc$!M$tJ*@NKu6(~#{*bmG0)V3aEE86qKK8V!7UZy91?Ix29UI` z`fG|xPLQ)%^(f`@;Tuigj;<9Ec>CX^Bv5&mq=Qsv8=^u)92h^BDv;%sWO~uE@j@l6 zt01ya6_zaC_P%Ci(>EVply-j^>0#v5l)j$YJrkFIHeGw%qR}!~I3k-&7~&Kc)PY^) zUH@&i{ArH^nEI5sqm4K&?|jC=*IqeD|1M@t;GC)CP-a`nM_SigNw{Hks&iRgh_?R; z3?HN{ZdF5RK=IttM_BYH_7KK+KjPYz{dOK}$ zDxMMc_nOwpr3Hq;==RwCYbMDw_iJ#A->DX1m8NZrqEha|q_qDZK@$Hz43`!ke3j*U z;Qv-a@>F1s!+clyVJUr1$4V}ZYd?TyvskUy<#p@n_Zqn4f%ey$4vEEUPQvy9S7#hu z>0J$&5P#dLxVepTJwAyknM|4wlDIww3SLP}5_WDV>*$1*rQSAHp zTX#}r*7=?hXRf7Qcz;~p0T7B1URx!^vkV)FOPewh2^0Z=8^MXZ?%vE-yQ~-O8Iu++ z?^RE@_O$f$lg^cD3w;$;Of=!bXq0R5$Xk-puQ$a|+Ud_~(Lvu4rFIz05YtzV02gkk z5Huh^7yTLa953fwM8W)|&25&MxQer+QlZOnc$K~#(z=(a>1c87cXv#faEZx2K27=P zHL2lSKJ|^&n8St1xmjiCilC>Y%4ic6e!TN$rDg>+D?X`7>g7r4Mi^>J`wON(;_^$}a z4Iy5rjKM|wQFY(Ow_)iZg7ukBa@Gx6Ay(wI%ZSZ}Jnw&vf=@R<0CekPqG@rfizZT$BL$7sxH zmF*d-AHI^)nLQkPZ|JzKb6(zzRgqOkZY+!`VoKne-z@R&XE!zc{;SI59h>XDz4iSR zW#wA8oJ#8s;!jXRbD6MMa&rO%5oPBqPd`^(UZd_ISl<7bTtg{XHDTCH)DR0j!*!!a zhy;*tMX)f39bC+@ZJH5QVFL7*SdzLqiR;xxc3zVB127r36v1i{`$SqZwg?` z*#{ywxSG2NU8Lm|B)>KFRW*pnNCZJ(TJB9Elc+i#87fpuGh>sPsGJ#@4+*wh^fhrx z^ds?}xA!u|5=)r>PQt!u6a$VHEa>Qx2Ak7Q^6Ru|oQWu|Elf{(Zabn{IM*tEMe_8s zYt?cQIs3L*cNM_|@mi2ga@1gBQ{6l~T|NbdHdHrKZh3Z5rtcJOeeL6gU;`jCr7-2IEc)@dq{Q3U*>VLWB2hi_kPTIdFX!!amJof>vvz77hf1)hD*GnL7 zL6Gs`YAYpJ-w#@=v^Iu56pP0At2SP_WqInii05w+Yksj?U7vUG0Wz zi!j$}?2Dmo{QG^ug@H8YoumvyAhClLx{8n^QTDV&SxE$}K}>4*SRv=3G=#abiOe^+ zm`!3?HIK2MO4Zj_V}}Cnt$c;Lxd~8qF~H1-1{%cD;9?fe+1U~T&r3n!76c8tst5MP z=jJnq4pn{*?e6w0V3C(JE3I}?1J)v815XN~hfb9?JiwhR=7a|Kys=HlV`txfkdZxz zZA;Ys7`!yc<+GIOcwRkz5||a?3!;^Nj9jj=rTJ)EK0sr>dR`t+x$t?adHK)b?YG#?VoFKF*r}Y%k=OOqmXS~3q(DKf#ro%Zh?%LsPB&)$y7#M8V;p=-DJNR;^FF%MZHbl8+uX z=N7xH@7Y0O<3;mb*4BQd68%wmZ3Sl3sM#PgJ_Jng-bBz)>Q}I?f0pPkQ6T<}>$DjF zH*P}fOxV)$M8(5wC$Ao(jGZ|vD(MbGj;lZ8{X2nvC+Xe#&(V4Td~Pj?=-DkrS2b|RKSNNk!%@px70DDC652FR4M1Bf*mw4U?M6-FFUw|&jrii@`N-^D#7ifM(gT9^LwH&`7X2(e=wNsEOr#pg6 zN%a@i>kkP);6jrRta7hI6tyL(;Q-66^g7FwjYg?47)56l0=}pj4hBQ?9BNIZzJk`1 z86xuV))@I4I@;+ZN`6L(+8jnGN=B%us}-R@mVI@=t;}UYNkK>*khbyGkA=w~0Io(vdb#385mG5Jxsf_f> z6O+{?`y%gMEASSd2~2>JHLzRP&S8RPmm`&-2!xu0gn{J48Uq#X9E%CiwSL<>!2`H&*o*T2#__r^(L ztmrq|sue{P@_8xudYOd)uME9bf74CWW{OZywo`aFQ&(91_yWk|$BG7_<&p8PCF^aD zvn!9cej9Z6oBuI`HJdi0BYj;zo{i2C#C90IodhXPeZnqna5>orkI*n+ty?j`czguM-@B$%BhREGB;zA% zpIK{epyP{&6BbO~&#I&huMC^s;;!}^`N8eyxis1>mttykw`m#HEZAUFxbU^=QFM-D z<%^@3D&J3M`{ta`$P#>qi>t(anCu;^HvGL1`993G#p<>O5xSL9B`GosWE-)uKzXmO z0mU(w2AX4tj>1LUIh}YSRI~z5c~*Vj_ucc>1uc}B`>LJFm4jtcs;`t->d;xEhJt18 zR_*EWK)#98p2`h>4xEF9KjZRf%$)z3{vRmlul#m0G|8PsUkD82OB1i|{#ElwTyARuq}s+FT_++4e-iUfkKEJ`a6 zX4CVTero?T+A~q7Hsg?2@uVoY$ZTXVU_$jeH}&=hDw_-FOY!tDx|Q{l?^Y#u6+i!?f#i<V?#Qt~WG}-4pn+%PGA1`M?O(LY$($7@)N6U3ELMsO zdDOGJY>1hcACbuUA}rNw&lf$hD^dI}8Wtxej62?q;SYE@-EU6I$PJ;DS-e2_<19euzPMH^hHVSJ9a*a2J^)S8dW}Jjln?EJTAlh()Xp~u!qA64O&G5K1 za4t>gORfmi$5M=PT32rF<-u8lH1YaPW@1%EaUMcW?i=XwB}9~}1dhG}0xza}0-o-W zjGYup%3KHIh(S58lJorStb@D4t+0|C2#y>KI#))WYv7 z5a&Mb7L++(oB$<4+sG7_Rl-{J&-h|&(#M(Da%bm8a`&Pq4B8l55SZw8J<8f&K<95U z?`JC;E;UA%C1chq=U%5PZ+q^3&+iw$8_z-huPbkN{06>Q%!2>rjgbEs5fQ1REQ@M| zE>0aT&$Y*34gPo(Z~m_~i*`iylN{(XDj@~xIyGfEc8Ua~KjMCtEIROXyhZ~oizmN% zAiC=qxqT9m1OA{y+?y0y35Yo}m68&0>VH2hx$EPrb$}S#9#x&in16~mx5sDO3{+Jg8^L~4Zqb6c8OdOd`UbG7q&=8|d=g zkd36VgL8dX8E?e)6lT4v?F+S8u7;+h9`#&Ye4Y+SeboZ9yu-NPGVD857HiApHz34Q zFa(#n2$&M4na^WI*Cz#0s^nxczIcux-n9m(c)0fiHM8GJ^Mmm7v$@iJ=z1?S1FUiA@o{vy{0TMU%$Orw zG4zz|@J?XhZQ!@<`#z%dHW~Z&^W5j*Qn$q8Q0MOwh;bdue|`XL>eoKo!?P5IM~4HZ zFm-}56%{;dn~06yMIUzf^I%fd7wFYyxTq>*0wvk1ep^F|uuEP$AvveBQ|N~3$c}xS zN>}E`)p@d~XJBBkZZFU+TgY@Y{TkDHBk zC()eevDln2R%P_{UfxP&$!lJeUly>zb!t#a7r=OQLytr1sulZk-(ZD62c zn7-^ZbUIpky{MRnBqbC%Db;8CsJBBDJ00uHz2ZI)APg!UGVC*^c-G?&xoZ=6fU=a@ zvI4+Lehv;U1gE5MrTb=A3pv++##P`)jiQ1^4@v z|Lv56_w{Zd&ZcBivYyvaX7}~V+ttQ<_xUS~|Ecc#-D1xcC^Tdrx2E$bv-?r^ZGGb@ zr{`Vp{OR~(C8PuTh4%`Eq|^U($>HPjxk^+LydG2XJLy6Z7To$_@e%C&zur!cc$QK# ztE6o8`b5ZFPG_?cfq6BznPU5aDsK4x#T@&eioR!=Nk%&nb9g!+2RDGUA+$#G0v=mU z4e|hNTsExUc$r4nKC>buZ2d5$%&_VJkBmO15{hwI3uof3n2ule=NH2s8;UzpOjbSb z?F+N}o#1-avY46hJYGze`+UtQv^=prh30Z=E^H21I5!rfK5)t(ob7A}Sa?^m`2|V} z&`miX;Z75a7+s~7A{|?KSxKp%8~TSHk6pv zb4jakr-ig2s-IGJ(fpLfQnU%aJ21M;_A_FaP*cyh{SLD^x9gs(AUm|CIUg8l9z*O{ zV7czhUb_)eMPY&TJ%N}7LY0G7l03*h48()jwxWo?WEHI1pI^(ylc8cSk9&YbO%R4W zimI#($F3&4f#TwSb7_?e0`PkmYTH!j7ZdN>22agegE0QL`|tO;Z%rsCXD=xZ&%^I0)Q{j+>{RJ4ORPgTDQxp+&#*mhRK!mDsmGO0PF4@7tld?GMH0&v!Mg zJ)1KVd)sLDEsE|QR=WS;HQN7;s4PdX$GBpM!6w>32vpOGGyDhDo@(TqwFM_dTfF1i zNnh67Vy!mr)Er6Kf>Ga4ts=|^@b}O(KRzv7QzlX+?8Vqx7219aW;3Ef58$gcljtY> zG_6gf%U^?yC%9Q46SjWLvx6e=yq=q5zut?W30<&*Ld!oDK>1bkledi+_3HknHm?co z!Kl0k5Iq43kk9#4`5k2()*TS+%N;54-760_!p0ucwh26s_*3-)SQ9J(ik5Q!SG4OX z3r<3#Z>B{D)q$wdVI9RE>7AbrrR?s@PqIP91kIoHx_|#7w#aDCqaQ#-vqBb87Bi9( ziIHzVC~W3Fl60UonOgtjNb5COnpvJH6JGrC)4>D8F~Awgsa>XMD$QAB$X&cO4I68< zZGF-89S>{N6fUKZ-o)C$ychs!S&RCaYRb?)#x|Q{t_pb>AJh>Ij2HuD#0I7wF0>D} zd1(`Y0)v;KW>3ttTC-ce#76OIqn{18S>($qCKAOgoYgkaq(@Vb%>{9kLqNkRN*Z$n zgYx(67pqugT}czAplr%4Ls;$&CGVVxeC)Rb+!_AzpkBojo6vdB5!x}ykk9d+6Z4$2;Z)& zef8Ple(!482oZL<%lE$<=()oc+VAeUdUa^KV?ST%Jgh|ENNqo(r0oQyymm@<0(%`!}i(NZr7Q*+1Js0blfQzNXnWKZ1jZ3rp zx8WJz;;l!)cjsJT`py1h|4r}pZ#ZwXzI%f2$34#?{%@5z?)>8%l`;X$KWl2Yyp!XLN z!JAdr+n0u!_f=-|yT?Qyq5pcAAH`1pE>Hm{37az8oFu?gs*)j&SL8+7!ZSx~Trg+Z z%%Em8peIHztF=6Y!#$CaClOh}0bpQx>0bAs&n&x>Oy3XkXykAVe@x|D5twn@gt52- zvzzKIiYs~43HjQO_7~-vVoqoSAx2M9cgile?g2dSzXn!lNJbD`uPJ)?b5HwJvogGgiweZI!x`IF{#NPGeYxZQt0C8ctss)=XcG?Ue9VIbIOn^DY^0NHaYb)!N^886 zRg^h?wm2gR%0p;$JoQ%5KvoRu6j%G)N_Wr1#ovlbPH0f!2Z`hD2iVM0&0K@oHEpMJ z8=mH)&b@pUX04J-hOhyeJ^~UT0jH?J%`_D{D4Y6UU~moFIbbqkMuA1>9J8WkF6HpU ze18N~1hwhf0<4vxDk`h#(*$i#d8cSo^w38uqy^I5>c`U(sH|8dV1N-;GeHrWSfBzE zQp^kB>rL|e-qfPsiK;;IpC%z7s1gPR`b5k!U?510c545YmO5w0Stjo6^TyP2*Fn-jetosU+0`YMWtBzD*h0S+)4#}f)*CqF2Le0Z;O z-|th=cqH!a*=NcYT!Vwt0bZad#Gyjui-SXhhl3kM2ci%Tw~Ut3YOAGmmZ%>6irSfU zE+5Xgm$kr51|_3OVJ}nVk;b8ZmXC`=f`u~;o&LFY*ge5JFY|e7g5+m3QRP9FQuYy_ zYlZ*4`?LGUA-64lFawcYCrbfe-~z(gwTf>~-Wwm#pAIz%zP4Ay^emGWC=CwsPK+4V z_F6Tlj?W}vk627k>S1o^xbL0pR;G_RtCg3}xB=d*JRjxA`4q9U`BsY`LPpken>JZ{ zx*V`JiW~=~vUlequNy|1vexQqx`Up+$Ao=UOckhTa2=t70ggruRnWkgu<(>~*$e5x zL`6iyS-&+GK|q{rsBsUm8wpkkFsd-dXWtO@p~}h1^AhCQhw) z&v006bl38Z1=rLsSi^wOkWx`BF8U6K{eY^r)^>i1Edw#R3Hx65dVjIu&KJ|ym&f{< z4jpA!tGaf7bM5lx({c>dxOi@w)8VrF>1O1Yn$@B9v17@~Oxbnh5hucrt1nhrM1=GZ zf(`KMj3^I4^tmB}z$mW}6{Q9QRd2vC2?=#KH)9JEcN%woEib2yNK_?qkJ;ggi6p== z?xt}$8OO1n)(keC3OXp{ZU0yuWarLVv-YAJyE3x7fY1xP6kS<>u(|!0Aa*g9VPoyME+-?Xzp`V(*`{Nu@GazQ3II3gM@a&$vHF zDId|NYbEBlo2zeK&|6W`ip{z+_PfZB4xOR!A2ni|sAoHOUXP%St^3CUMo|qjbgZkEC4o?dg z>rX~W>wNdBRFDb1updDvRMmtiIPH_ZmPHf`yfQgU7TUkd- zL!a}%sARJ|-~*uSTgQ&^#Qy|7rWf+du0J0woHaau@tn5!)sN@2a0Ovebx^3KrLS@| ziK5^_+_jny^_^Pr^914Pi0K9ZZgvx`?)pzWdyw0=E^qVuy7hgcFxS|R5&5`UHaB@< z<~dwHyXEr6?6me1!I(cl;g=}G2LMHTT)&g%%hN!EA$Q;omJYf^vq{YgyM&=zp6kR( zV7d&Ah0%&?z=0JGaz4$dQ=<1u6thW{A>$MuBL*hQg1ZFKwidt^M!`NT;lzFzlPv7fwc5yZg zuu#KcSzrd-F?G0m3QB;_@Bc9!*J?Rsa##?oOdiRO+(l!*Hm7z^wH2B#-@<-Qp4aW> zn8{4K^(bC7v8t$IdMOfoP2D@o#25I{xVVwGURASSXMg2|!*A;);{11tk8tPlij9_Q zD5cF$fs+{!3BPT@kbrqyjcGXVPpfbu_3kO?A`|g78g2!?y!ePY{)r4cU1`}l+vHJH z$-*W7=;AAAj6EDhcw7XMrQ8OQDGI0}Nmc%G77-t*nyvI_bH`l{3TqaL;e_L7&{ z<*OaZ_ASv{-9Q-($3Ft}fykJc%;IA+{-dT;jV*b3dh3wQb9oDDuOQ1OtLeP5_Vna^ z`u;tH$)MYI>ZpWM;rZHNotA;Y*3z<9uh%K7+UDN~W$k*ggPBQ?Mg_J5S*U>rgQO}Y zvM;2gQPxQ+;Lt4K(4ya~;p$0(M6wlO3m}sV?vcMALXxV})Jup^7Apf)Z;bg!OC5t% zpwQ8V);m#I7?y3_h>FqrL})@_t9lkHr{qToRjzlDh{WaY5KIL%k(eTyPFL!izYIO7 zDta`6O~KSYtN_E@Y}ty0E+E9MQp)2tBvf?FUum+Y^;7Wg9NOUl6OW+( z^vUP8rN<=d@$oT;wPOmJl#=q7ah;)vv6!*skYvYNHLa|bm5%B+bZGgUth=7~`;vFh z(|g@!d#5h$*9I(`6nO$(s=Zr)>8g(R*1SL}-i$W0y8_fn@4v_@*-MSzbMa`B1 z#0SqZ3{Wm-4}(vHI#8q*M-6pGv2?4d?#IhWHc^a5j*P)iOyMJAh1Eam_IT>O&08Jv zj64g+BOpe{;{7xwurrs%E*?dScDuR&Rh0q~UDlN*WMM@cXU{^({);}Qk z?OcWa9<%9l{#GHyQ|Mf7?~uRz-gq!xdYwuk1$iR1yiOY>MdjscA3luZ;(~kHAhQ3z ziF=7nxO!ak&Pv8=G_hA@XLkw^6PKUqx$p@a(^h?&%5>D=d{w~vO{fYW>WFJoe?S=9qdm{Zh z?DLJ~6h2-WtMLe{x4^=Vs;;t|OmmvfLHx+ODhH)*ZZbd3dO8MWbz8l~YD_ymExQ03 zLM-Wf-vnMxZ)^MJnxDUYT%RrWnU>Dn^fzuQ8!h3&a=ZEbl*41rmo6ngik`B`Pv;1c zp~A}RT-MM%gdXSGJrt-1ceRz9Ch=033}+dZmCUPZxjoF+o71me`uX}lEcGHHxj%9UK7fx?#&&zJk zdXBXJ)qyTeUe87FM=s&<2Kd8S#`)XzaI}Jg_cY&eXC*vLeDpr3(3?^G;dAGGlPTNX?Ey&( zmjBKqgz)RFbhqbGUrA!!JJy~r?b|j4h{V1k*G-S6_)XHfX5wH=eLXW6i{b=U4Z&1-S@p5wc<&-C@xy@K_tfdR=n#&XvmYXv@^k0Ftez!ZU^2A`+BqGpkl zpNuR<`_mC9MpCQ}Mr&A1%(Taj2g#aNoDfQePP)Tregstx4-@QM9FLDUN{uw2%*p0d z_Bl%u&6ql{uuu^8;Q*&5!&?z((slDv9GWSpX#5uugJ^{6s;b}SBsuA|*6|@lC5O^= zTV71Zljx2YYINPE>d(&3Z0|icx?g+VU(dV!rWWB55C&K#i9P*%R%TeBbKh=CN|fFQ zQT%GF%gU_g_Y}yD&2h;yNzTL9*So(~$%HyY)kKDc4Pu%DCZ#i;s~ijRwTF$NuzwV~ zSek=lOsFP{6zao)U;ms3LG|{jOQ@6SBO&V#J<_U*O#Li#d3S#@BhOTglea-s2@?=c zDgKFfQ^@Ui+0c%2!S#gfowfQ;9Y~hHn`{=BEoQV^-t^f89{(g(RaF6qmuiisvTXuI z-Y!D5ay_=gUHD!v#8K8>yZEOrPS|HoH+oP^E-DOOkFuQKtk>E}Fy-kUE@S;n%{?5@ zJ{p`n0L<`+^B%!dQT&oD&`0jJT+|4dURKu9n;uJ<0&}U1!VZRsYpDQ1t}KqItdB&4@kmVeGJ?3k^<={`!ic4< z534ts#gGDh-1XH2Gs@~m8kh|$IvN_)c)7V&GEINX-cxq;DOpTJs`^y6M$YGEPR<4H z-5it%oT)U04M}oatJUrX-f%Rj3Vqe4+Twa# z@uu^o&MG?IkR=tjr}f2b#L;kYXf$>Wlz_4cjH%wxy(>;%?O7#6mZ19#oS@i2UI4zN zZ}duuU!%>2T%b}Jq&YAxgJ*0PQUV0QQWFOd6{w{RO5@qja|DA%{jZ42=To}Pws^pg z0*JQnm^6@RXewhb9o*|4_GHkFf=ws&4&2mWgC)%Gsn0mc^2>Vm~dEM4&Pe; zsIIU|kFAAcT)G#-xRNo9%0I5S0pqG9MacqC8(dMJ=P)c!*k`Dxg-8vpUHml}XJW4Z z6|sD;3ldEI`Rz5mj6|mC3|UV22RM6BPzH~Ph7tK}z$olC>K|THu|MGm5(1knbN_^k z9|(6Eqe_*ZYJ1p@bTa<9H)O%6=VworL89yW8Zm{mM%#5!;T##4oYvu@Lf7tI)%8Yj zOwfK!&-8lK3Hg-W@xs5TaeuEGDmSTDUrM-!bll+SR&qUo!h>dgh{f`DF2Iy4Ki>!{|B)ib{61qAHwEikdr;j@ zH9uY)9gy5VZwc8W7@&V8!CpZ2HOK5p9SIml#0$n4@DwG5rvZgZe1tgY)y~d>mG%jo zcCZhS7FH@PT;mupF@eBvg)Raf&<90I{n#J}ESKDJ3DH zuKsmtdExGbf}nZve6_v-N`yRKWFcz&P~?7ELHGEWbXL z;|theWW;sA^ciJ+!WgCUSM?~rsTFQ+h-6OO>Zb1QQ=46^NX=>nX$?;%C2xD#tL@Cd5y@GCJS{D)fdG~uFBG0@{Vtqy zuu?cc4LEzi;T#&FaXGc4q6U~t6H&|+N?YeklI(BeZ9TiR_je z8~>`Mq@-kGLJ`CMA*}>x{Jot?<#tc#$ zR>$-1RbKeKJC*#n{9bD^;fiwu@7E&PdAa2uB_cMdn1KLz61>J5`YLl^dbx~Y`7G=a zjF@`7Svh!6SP%@MAut@H6nylim|-+kyK^OQ)_5CS?cCTit?{2FSOQMRcz0io)3cVJ z1QIxO*0r?Yj39lm&`Z?N{kn=?hQ0p%6#ua}pMz#o+iElc%${Hp< z61#Z`X+HEub=|GjaWnbST#};K;OP)X@%zhf;LnH%$c$|)tY8scU4AK*FZ%E<+#ov# zTZzuCkT#r@)D(!SSG5F~9Vr=tv$bziFLshVt>Tz z;`Tbp&S%9PNvd#DZwsD(BvZ)`rz|hPuww{bif>4*XsA7Z%oaJKEbJd)G^vTLA1ez6X6U?^ch?A`{K+=1~P! zT59;gppE6Hf#;U$ZWfZmVLb(0qnk!EPItkFLXw3yUj<3O6%(80W)mNDXPg;EiTi7m zQ+eYPsbwn}g;NaS*X36Px&Px5^iuA9!)dZBR9w`wPruOhZtu)1K23g$1#9^1Op`a| zoi>7MjvDZZ5EHf6l+-sS#40uQyfA8h_ABXjV7D-l)M<3AK&KSKDL1dcuoK!(*8RYD%U>s1wRhQ8K@_f9wc_4$_81;<(~rgZQ2KDTK{5T?XKQiY9!) z5XKA0fYZ|#wY3)GkkALf#T_cR5)Ybwy!VHP2<=i`B~U%Y-1EZrX8Unt>+X1FBc=tb zd11}Tb&beFH`?9j&Oz#>qQU8!G1YE3&#Bn%3;%m(6Ry!DNcX(s;pKT4kN-(Ak>BC* zrDWtUc~831;K=^qWKsmsTx1a33k>O)LWen%7qCDH&D~BgcDx))if+sAQ#j}=Ac?1? z!y-B=_lDyE&OwF%hD5hZkM%MVU^nvMX4ZX#%!hON(I|L|<6~AmS>HE%QFY({6lUu7UZkvf5gicNTH94DUYTw z00j(+{ja}P2d1a5AH&LjT-m?^_P68sw1_Y;Q2-Q!T-IT4l`Ltohg{MnwIV3fKNFe* zpuuwu9dJN`JU-#A))o3wTFPca<~66#91#e z;-gJF;-C_(2Fo5Z{P_>A#t`kTtsXv+H2=)LY$!ft0rdVPy}H5_-YKBl{(U2~IRWB(rd0F@}kovE@1-NgvD8ern7DCr}Q6mjA zLXrQWqW;;Q6y6^b6Er&x`+j|9ygFCvd5{YcA( zmaCE`1}R>e;cN_D3L_z5ge%)6P2J$W*xf(#BQQ|yseL{T_)lEg5RA!4T$xor9;WgQX9UmDarrEntxJvqayTpoIkf;@cwAX*0C=MjIiea8b2o&mt3 zxDN_x!w>w`^+!Xd>2;nFynon(Zl#oa&{rWaQ)BJuMgdpq4wke%b`nXlo z!;V0cno!Qnn4|F>qtNzn!NNYvZ?zvoBQkaRQ{Nbq({SYx6avn4CTAh6_|QaoISzw9 zkH4m*@xyh(c-u7&QR9cuQkR=)c?c0t)JJW2z_q>t zTYiW`=X%R|EUws;gkkR--Ym<2a>|bk8<8G3_J7_znvw`g6C+F_E}F{ncIKXIwZX-5 z`!uSwit$rt#`f?O{|e2CG}luxy7Rf0$HD@0bvX(v*dV<_+k3ksNQ*DjcFUJx`4?_Y zm%nS8cNa}r{bQ4GyOTNDx1UqT)!nw&>j8Vue}k7)a*MGTtkjLp2IozRuibTSD!ku* zGR87=*q-K~(j-akQ6Lx>!?UY#2C-`Z%%S6rXwpF_@`1y7TQqqZ3@y+FK%>@xMwNS` zPG->hjcaFvnT;Rd9|XY(6%onFKQS^|*{yPRCd-76OB!UV3B?Q7&v7TOy3R}y;ET&6 zCWD;$NWAk{d0T_;TTJIe>=jv{v15$0Z&rWSonoW=Qiwr%A02IF0ae{id( z7My<6gnMgl$HtuLwz@>T`M>z3#-PsAov+77#qD(z-Eg{+mlL6LJKDEGJr8^J~G{y_GFev}`m4$~Lf7v@Uo=^12F-4@0%k{$<%S!Rn3_0 z;^rzrFuq>>P1+GUIak=@qH+u=HRqZ=*5>M$(Nc_vKwa-;`poLx5h!9;t91bWr z=P(c-$bm`+LJj=D;*UyaBOIY2u!63I=f{`ps}9RBP}6r&&Pd`ypVGH3!}^6PYHeM1 zhD0gbJkhWQw<3KM{VUUGsIl{2;PKfYoEJN&CbTWM`sl0?Nn6Vnp=+$W`{EFaOrP2J9-?QdBDiYYLSEwy z4mD{ZcIhfb#4|q{X4*myHP`3G!KLvME{2x(p!=Pv95uIFsD{N0S|20izY04Iyt@P zz+mh4Obp$h|18eV6&2VXqfpQi^mt%JHzBWu0!%1WF)RR4v3wV&q(KlJx z{zy=7=j@(|v%<}=qsm_0XgS-)p1E*d5Xc_1L7l?ctoOv9ymwh^5F73Z((Y*KJ~6d; zN`{V2nm#I1{40bWWy5A78;fVPdRO7sM<R}JJ*G{Nfe47mw@U5Hd6CPs zZm?9Ig7Ea_BK&($?Mr@$H*@jHQgWgC#vM-Gh|kWT|yi&l3N0v(E6yKvHjIN&Zi9jY>{V zH#6dg>bC`e?$MKo<;68N%t8R%m7;bd8o1a(acRxxqv`_!AUVh6>n06AO90nT_iwcW z`Pol*?pcf{fHd&rdk@3ajDkRFtc0JQAvwQR1@7mZBiO+>C>cR0V$yFExDeHs?-&IOHPaS}C7(VslzSCZA9xg0tupWbJkD#fmYL*!kKACtxu8nSUq3jKm1&J!^$- zO?7@`Blq|g-vb4Q1=zIm!w?McXARG|Uu<$ujo0PxJ2N7Q-M%-2q)&kVjSt=XkG>RO z0^a30UZ3j{-;9dhp89UDN4WdM%myJv6gj4ER<7IftotMUFer2a<#7fo0UcHvOa&AM zXc2NOn<3LKWuvER1v--kjpoZ=fUg@O+gW{LS zH&WtFA>T$et0_V7s6uLDWkZa}WZ;wFS+aAxilU_8LOktJ-;0T~cU{XWYY4}TtA2x4 zxNZ&ydqOxHj_yqNjfh~8GpnKhI@*U>W8e^wnkci9Q#JQC-gZ%87OEw+|f~ zE@7r=M-19iTpE}nCK;@T!H>rpU&kC_9e zbOlPi8vj(8WIXEkj&^@ShkQF$p4a9S^FZbMi1ldHs64FN&+e0i`afQ4`3=#*c|N}2 z?dAv)Lq!fIN{Znh5QW9EJ_IE?hmr>(DRo;n$N_$oQbno9JIJM7WFdRc@8=nI6v|bf zykVmR{>eA{!6#Cd?pj-`_P3s>KzzlE&wRvovq~!QQZl{SR8X)x6)c{cj^)C6XnrhT zjIoiNEkuNzo8McKJuL{z!qG+{4qBzUujX~|E#I)}`A zbU>K&jMkAOM~!%NO~~2xo_o%iEbHjQZR@%L%<0m@%1=#i9r5bPl){`3(}N^yWeY&% z-C)7?=_q61o7p$32bq^PM`h=v)m!c0|1BlYQ1C#RGd@3URRo3KS{;J}E6)!i#ufG_ z%O)cY&^O-LuI(%rWyd<+;G8Gs;OW^c4HJr%$G{{EB9LBnF+qh=V!YrIQ~>ykqirkO zvV40dbl(fjQ@lAX0m5%Tp#p1GsFc2sy(S)D@YMD*;?bCsR@&1F#V<3#C>S3KpsoY4 zDu9$*fUp>Azy)OZi4>d$j1w|d-fl4`erL_)Ax#KGx<;_tp4DZxlV zm^%aEvz*nusVyT{=EWc2gU*eP7NRTH_H;HviB>97Qt%sP{|NiS z;6y71`)p1B3|6pg2*1pp68xG)_s_$|ij)iHWPP9w}F=K_!6&Ajxx>WgRJq7NjOh${@MF*cNpdTmEz?bXNUDEm?{S5T^Z?-)g-B$^^V>N+eFF1?PFSGdoI{;kT}-9FKk6BH*mq@VviS;9)_P z<)@FJ^Y9Aci@P&ynm>m2g`gnP!b8P)y5fP?T26_CRqqq>r>CxfY|Pd~z?<--&dWy9 zA?KCt7a!S~nUf#7GVl`uLMnlU=kN-*Q>vmP#EF(dUewKl8l~#4)@s;pbv{`E# zFAZ6KT5Eot(|5!;MEbt>RX&Qe)RsIeoL|y^2RxFJr);##;!ob#lJ&1{Y2AKQg>+Cp z#2_CS1*XgZD&s8%p*2r<}F~F-j$BL9v_d738CD-)^Pg#^fR}5VW~Gp1lmJlwqnpd@+`v{rX0RuRTq91s{CtONrRw~r3z+VBHgSYNm)#h-#AEO zqIyrVE@Y=lJ82SY3a)?r?)>66hY1}WM&I@ASMYC7SqFqEEfRvv%uIp;MDQ75jG4}} z=5Q5G918j;tc%Q`yUrLYhHR<1dcb$UKP6F$zqeQ7ROA@%?{qqs7UJ&95L_@uFLS9v zFwzh*9+q0I9>1q2XBv#1VGB*~d3+|N7oBp=^ogv&Uw8hEQT#!mZm5^H>&h)#R34lWWdKBjQbwNAs)Be24|d+uzj zqh{FzOes~#R-IY1wxDUt6?I;9`AUj2?95NZA#5(V#_s7t%KYHVP9&%B$=#9=0sHs8ZuN>1qbPF|507jmbP~tqUq6Cj zm50mK={QL}Uv3W)<6rN-H#RoLhD%`s02|rHn4TuvhT9{dmT!-huUBV^XOhm|1A@ge zvxhv&-4$6t<8wa6xvuKN3fabS+3@3Ftb zApwAGGs=mtT2>N%X|BVs3%QHU)FEG-jG%|3AaGIlPnxX2XQZ$INkk!u!Ph4KPJTVl z(GOfBNbHXKnlUOi?XF_NL~1RT?6<}wg(vJ-b09%rDb(@&Ek>lSt{xp79e{6i)bRrm z(e8Ag)ulb_S)|0$MAr%lr4T>=@6*%p(7@>ft6R2dZ&Q<{{f)gz!XV}B%8K}UeEer- zGs%=m{X`a)`^zkG!b)OVnmD=YAK$Mk&1P5@pjn~A%+BumIIaMlR)-K70sxm(k&J|Y zF?Wf(jjrvC>YkWqVQsRo@AakWteiBk#fK6Mscizu`|McK)3lQ>MkXrk-?CwS;ld7{ zqv)=}XiV|*-@e04%e5HSixik!Sgg0$3-0F-x@T|cG+19{dmB+nNJ<(Q7wrDHIFv= zXagQ>)HkDBQ@I6J%R%ty5QH!k}!JMZv#b92*j$;T+Nda}Am zT|FyACRiYkdb&x=Tp!h97vUe8n9~7@h?&_TW&&koP_pq7Ua1KR5+(ys@c*(4C0Ach z51&m96Ay1|MjseoUT-qtz@a^0Ix{o#BYb}{i?jQ~1QIT zUx_y6w{mMYcEf^7(6KN(6<|md22(O;%%ZvMMlTQ7piv3GCWbR@=9~Rr=kNrebQiH} zO1YkOZg{&Y%hDK4Wz5x2!fRv@bLxJ*ykrzAlxfk#hKFAqAGdhFsd&9JQY1wPFNYmr zy=L_P8i2&a#H4bxw6ru9KIjXEEm}*-S5J;Flw&Z#J6!@xjsd!CamndUVI;J@*Dx+1Qzxom>G*EAqTS_=~aoXP7V zCHRm|6x==a;0?1Xzx_O!UJ&oYJr<-TVTrxfNSt(QQufs3#?D3lb2_+dUcAr&DGq=yh zoSg?!uXSKX^a~Zo2KD%(sXJX722i}T1bJOdbG2R8!GN9}mi&gcUys?(*xd@S>nFWdByk>3OT-UXv{TwUVjc%Oc|Tlprol z@2KF`D{imhV0yE}ZPNTF*f>RHO-05ht$rl*MvAB@3Ej5MG$%$^{qg3*vtz7wh6R8rAFL~7I8cSf4c5PggEeLkaNKtCGfO#| zn^GU3?-?>6%`@HQSgdlNq4u<>sofh-W>QsM{no|2;{%py$xh{Jioj?z%DEdLHrp*nivl>OEK>wgUb)`4I}2y)t%bqnya@S1b4CV##^=UcOp` zD*2=JVP|DU)Wd-j=UWfVpo80LvdEB0r>90#ze$wrfPkYBD5biDW!I{qu`J{mgUeCy zN0ospSPr)hD~LhZhI`k2_J$VSeqxyoOFc<=(`1XX4U=$ zAcx#GwoQlC#lxuVko&_!wy)oGsGc@N*$1~LwM2HQ7?nSnp3z$lL z$&%n$xj8}~qlZrV>6l2GEM-o_%SlHbyiRA5{$s=*3yc3zyK>$t(Y-IW`6selgqtn5 z-HKsrn*L4HB>XB^z~3t9C(K+B{2%%NWV;1KB{i(fEX4eV#2K&IjO1XVDPa(U_>r)l zRUj0d6z(A=brJRtZdsBL}`ezLd#9{`XzF zHU;Ip1o_tMM&@dW?|xi-xzaZm^^3_%dEL+&&m(I?PtFlOZVHsgH;!ima%7dWl?_K= z4#93>7bq>R`t1qNA6$V5HPei2-R;L`*Ldw;2RrS5&YBUg%QaEQa2IZ==x}8=3K%{A zz|aY(`27}V^rLv1@O!%y;JD0mjp0OgyIc2==}6YsZ)~#E?qqCvhL_9GI_?p9u@?_( zv4EP)6q_({97ri|9Fix7jymA!rQVrP$PT5+c{scdhg3Vp=lpB${DcIw^W@ebuJ67g z2&l2S3iAHncL5xSS#E)90XJLGAON#b*7qKiJce~))iBm z%HF#XEp<WbWgT6)Widh%`rQH?8Jt1PIHPPj+g0(fwt6;VO7-SM>f2V-unesz-=~ z-&YGrjo$4QL1KwHqVtcX>jz9beNS$!2GeVW%H7%NgQKc5*t5?bW`qN?g~Q;YbhbGL z99lG2uS!GdJOpm*YzoGhoj;g)y|4yE7PpMeKi!_JH~kir-?;0*LVeu@2C}%~ zLDC*|W(05h2?l4{C?zP=xFe0VH?BFqRheZ7v*eFrAvA{EZi6bBd3wnu4UJs zHi`Lh<3RSP<&8Rspwbz#A;G#Xy%tNo2l;=zlD`MMHZJLS?nSfmJa2hD>}yaU~N>v$gTPv&BIKQVHY7c3syzwS4DKaLB=bhUO5MCIof5OU0T2m0x(F!WgB zx%9^WVy7mMBQCwY?dDndP3;$aEMka1 zz+(k}{uKncQDcBE^~&2QySDhK@XUUAYrB>pFgHM;K)r;=Ac?{{)PhtSa!;f=+k(pB z<)FAO=&#y<&6{!0L~g40Y8D27@pRN{eY{EuOgNh0YUNS6rF8ZwPYGgPBRQo3g4nYc z!cD4I1c)3@9T#3Q68z_LQ1`SF@36Cq|L(c6##6yY84KTSxqcSFwmd+A#M=`X52ir{ z@?|nwNg0_JrU4~3hN{_!XW59n&bdtS=srI3!7i)m+0KN-%tNZFDp&5?V^(ZM&KF!W zb@h4u-q?do4*De48_L=Xg+K>>RL&>ff2tH&gh$U8&U>FDySLBLMKdcNH%IBx*Rsh+ zm}Vtj)pmhs?B}lLmdD&@RZ_rIIj#3er0-ob=_$gzZ~Hg2i2PC~?Kq>>YzU{;ioRJ( zXA`|S$g1Iq;frC<0}XLM-g?`T{qzVT@(Jv~G^a&Iq}04AIQ(>OvoVQ{lSF@ndRLd~ zUm9FZA^12@@-D?O>OAoza$1mux4!*Bs5GmzOb0jAfzs2-44x7EWrU&~ACBz7-z{tVA9R4zZPWSI+`#Kebi&!ECtem)MssTBydZV4xyE^e}3HqF4qi z`iP1WTWpLlMKJrjhanqbt3ymMO|ysN^84QByQ>@>?2#lCI+P7akiZh;^cZU-;`;w_ zHD6cYIkcwRW@GhyecLLFR+Bbn&o1(z0CoLkbtyBJ{fU3C{?zm9y|czk*bhrsKC${2 zZfwB4EJbKJbR;_m)n)cW$@U&sac6;qHvLY&IFjY8oN0o+2$lr1y{{f2o1*!7cG1=Mr+LgXJ$8t&R!c+fKkFZ_vH_eJxdKz$ z6sp`b*@Am2L%2~-44CyRAuF_1^@AYZ_(4a%wt>JZ3#`%v{nTcLC6?s40xim8M#4h514YmiayM&OCgsz}qw zZpMv14*c!B69Oz#gDj4~TCa+eISLvQ+#hBcGsxLfDeP6vD)}(g;>hL0RU_+@&g{Yg zh}m81Rg?9@ulCTj*m&egZaZi%FR#!=<5ny6$r@0OH_0aQfA?+MX8mdcD|jJh+BJ^TJwO9V@8hx;4?%nym#n->jX%>LN;7DWJ)8UY&#muW;jUq$Cv&f) zoR1Y0*W{!|?o!`CQ>a74x*JbVG-kh!bm8Ry~5L+5Ua~>3}`^)mkCKolc((o8|m1 zbL&AO`5iu1{|$14YC9Q>g^T{kFqy`NDAc_+!T1EjNv}Ilp zyZDU{j!nv6^l=j!rF{$=d3YmOH^PC;K8YtA3#^@sIm9vR_(8V*HVwPKNVWyNYmomNy-ywYyz zfq->DUbK=(8C%%glsWzO&s~3{utjebd=eOan~+Mq9{10tmVPrVe~)gmaBZ!=h3*WQ z7ijib7BOSQW}IfzD;*cMzWKszNd{+E77% zBJjdHjI0PNKu`1r%3Auqofg#m5;wpVGK>6&97QhBZUq1sg|~QV+Wo~I5u&gK?L6zL zbCvCq%X)qoTkA!z3B4So)Zx%7DA_F{r(EMd^V|51erR$;tPq`*#Br&wB{lo&mm)oo z4j<_2;$JbQpG6DHQ`z1O(cc<=vcyS~F8tGk-#X3Y8EHLbw4^q6*-ZDj+>~UW9kzBs zdV+DBVxdqXp#@50^4Ty9*qREixNfsS0Hxef8Yf4pgktCI%`ap`kg(ba+mL|n{n zHAU1=0h4QPnerNyWj>eWF1NRE<*3NQBy&6xcy!uu@?6Nkcjua$?jfkox%{oab@~`D zB_fyjY1*XR!2}<@;zM!^5!Tt}SmSmG-e7m6-{g2lNyNcRf~rLv0}jYgW|~}RZX22f z>AwaRo0KL4L#lF2+>Hr-U^s1HM&u2clpFcO{C?cizdAzaeEK;zj|l;Irk){m4gjJM?k_yQ>pE9Kr27cV^mQ$-{xT(5lq19^DfO(G0He*s=h(G5;|Zm zkdn~vZKw(|?Kah?)Ub%ZUYTiyxt5kxp1$uSFbC*QM`nT(s@GMeN_d)bpy$ ze=O!*N6Dz+o_w#~PeaSjsy~fZe{C8XGwwKZ=q^%+HRGdzA_zjf1#Koz8XclkZPB7> zDQ;`?aB@P)_JAS~GQE27;bj$ZKCXIq`1Tt&IV#)xdG=3yA+6gr3iN@MOo2Al4iX=( zJm*;C@i)vZog5`BnN2i}3I1%*zp*^D?70AiER+!LM*)uA5g(! zTCn?y*)4hE^%Rd*jTUh9snl>@<#)AccE*W{c1kZehGjV;(5}SG0UuTQDL#Lh^{|{)baM@un)G=qD6K?#kKl7E&?}UzySg8LOzr1 zXu=HB=NK!;`V`emg*GHIT-Jty4HM-m9ufF*ub$`AZ=_31>^4{?JYEXFnGq``rPSuz z*Y6u}yt*x-%x=Ss$p;7*U~`wF>_BMvOVRxwQ|-~rs=&M_qv9PlnDLDjyYZ@(d7I~F z$?w0~xbvIaTB>cGf^yVXXY>7`O%i~~;(z}0fnrVf_V%8foNWJDUtdSdyDsAek46-r zQYn@Co3lD9<7lZhB)t^U$xa!aW z2Am6@ezJ)h8V*tUl6xAl`QfZ1NLy1;_Pm0b%ONwn$q^ZL{vGVwu(|u2D~Z)gocjBS z@I)f=ql+U|g7(*F^rWh^(UgqGST-f_u5X-P5l z7k!vIIz|&O=a`*^@Zzk@^72#D(!Po2R~YoKkDsu=F@Vx7h^xn1i)Lwf7*flm{kgG_ z2p=g3@ihgR(#Qr8qCmb(9|8`h&JaQgH6m@%sTe~}S@B|kZX8ZgDm0gQUJeYo0h9zF zk0@7v*1dwlt9KIPY&de+;!Q(K>wY!%rqrUISdE(#KsFKIgI)U_&fU0(vKfF(UK3nh9W}2)((Jp2k-zBE+S3rp2*TSkZe)JM^{HQj z(d+v#yZvtdc%)q!^!1psRr#EAkc_peVYUA3N1CHUa4NDt;mbSCICQv_WSeXJCN&)8 zI36P8wMYD^*PXFRCj>GYVlY1IpZ9yY!!%QP^=a1Kqcuu=&ESe!Yh;YH$^h1|U)q_7 zh$p5-Lgo&Q8TlcHhcW_op;9BQ??+Zg(B|lcshgVG%^EG(t)jY?IvNi#lYXZhU-!`& zs|@d)b25`RX#;n{gIZsg6+Sh+-vXPaWO$a_@wSW0xe>N?`E2-YP;BQ@a+#_KWEtSVz*m{Utog;Crasdl ziS;b?@Rk4elkR!EB~9V&Of;Eu*|BLAw-vA-fBVYj`^9H@?>HE z60>T3h5qwX>$>@Cef6aT8YM%swctHk6&6N^+T*IeYV01x0J-DkmrIIfV3oD^8)I&3 zBnVu`rVA=-qjrlMh~Q<(jN}o`Ert}Y9YWvE6eJ%)Ycrk@2E#tj^$|_JYjq~97Q&|$ zB~6vq%7wh~y@Z1B^d_#**C#!8NPPRvnd7K6(A;6&T|dvxIDbHmtAO=pfI7@`QF!%COMIgD$EWCpl~1bbbOgz zNlVZz&qqV0HA2dt?zvAn@pUUXyeK=Xv`d9RwO+x-5jd{g{f-$uR#GgRttx$hdN@!J$w9sH zwHRQosLIA9d8>dVU|PBS`_R|a<*+_)N09|1p4?mpnm)Y2@i<`6JUiY!ZSGU)ml;!- z6i4z11ru30x~zonCn~9C3)S4m2to(lG2YqtcC@f1RL^x_)r@X&m$HNwI}9q01jg68F|~If{m}tDktk;#ba~n0$G|% z@sn3jx#Py!HgLIIK$!UJ&%7BW6_rzki3x25wFWyByLGF(r)e4bQ8qt>Yp5M}Tsb-k zu@@@hFSB0~af< z_p2lIPxl9Rrq`sh9;HaKW)Qm}p2`T6Yg1Y52uR2D$bUZX@ycQmgzqQ6)(3XtOow=; z@dznme)=JP3L*2_fpdy*C1RCgRbe`<`0iqRlx%peZWWv4D8Pr&Cmqig0sWNaHX+F! zSoa^w^L1-<-2KN=?6*D;Hr4V#1Xt=T!XV&_ulUjZzlwIQpK`FxPI>S1^b^lJ(7h*? zcA0)Pu!a=yPLRFs*a!mW8R9-*_3WWqx0}bQ%Zd&|fOKqVb#+=Ytkzh8 z#dLrHB5$NYlc_95%Lo~eXDu0D*$Wghp?+;uOJ-GdF2K)d)Q81tS9!`rxamH7fD_}b z15B>!+xYJf~5;C zkHdGuU=yvr{_?GlJGTotp_-RaoKTwg%d+tllH(ttyj<@yNU}wR-CU#}&_4-E;Lkay zUytuk_HtfG7q0dD6G)}9^Q?KT?BC~ObYQSQY@Vhfe6u)CwvhLj5x8?zxNqHNpI?wg zHz`w2i?>e_L^aY(Nl2nGAGhfqu7`(-q7?XqE<->WJalKWYE-kQ9Mkcb7%X>>XJUC6 zT&zX|Ml|vcezfIo)fSFO>W*g?FOhJ)PWKC@#jOTa(w8q5E0Th*xYyvZKO^{NJ_eI_ z%SNb1W51{^&X4Sc>I`d#0RvaXVG4W80H@0-_vI$(wxJsD|_zbFA(J&c47!S z*?p6YWHzlV+?ctO4i)0D&bD?9m%pyZs>q3Rw0s7Ua?qM+x^HmKGM`-0Acwk5gz-q! zmL@Z53Y{G{=?W+4jBM5AE@I~=?>gMzzDIy+yr}#|e)`c-^fFdv?5<9ZS$~h2n*F*M z;PopO16*)*ZHBWK|F!Z_aVujKOjb%lDvj02PBZuA`E$cld%}9-D-E0LhW3dZ3{qB$ z53btN+W9IAGl55ilU$IuZ~!%G)y;>}Cd z9`gE4I_HZ)g!iV7)U;%M?aN|2#U$tMcegT4(s8;g&>mes#GRa0hJ|9)Y1ifcwPH97 zwnXe2xE>Al-xS$woQsj|Dkvs8%~{eie|<^xo=PbZk-{zDFVRcrtgdvwpR07~JI+Ix z1q+fym(8iQ<#Bu0Lb-!z#p7YnneyPrSn^vn zM6#gJWgOBrIe;c8b}7a}aVXMD{M-hSD+fo5Hjq)@iIAWMox}WGbZt_&H8f9JG}ZVR zwwOMT96ShKX_}r3GedQhG|ga(l=6=U&IOW)R%R?x>e{D$+Xo!XiiwJFi_oxh%aSgY z_mOxj<)xQmsE)=ieQ^suF-3+Oi5|Q%9G+MNxq7Pa=!1V?dXDaXp_Py4=UX+NWu;May`mnRF~*w| zRYYkTwu-zRM51SIZH8YF!sXYr9r9YdJ(Cf(*ZNMGzS(1~rpvN5=hzWuZZDXuvFffO z4lNXTs=7?g9e!FAX&yG`KT?t+Tvc#kTT;v<)r-1%ZE}OOV#P79@MxO1E255A^0YV} z@QeLjpoH;KRDAhfsL>hPMa~UAlh>BCE4ecs8yd}v+tuk#n`7^7;lyvG@dEaW2pp9F z{MWrDB#)B2fM8g`SlXvc;Vn@_a1db$6$U~7#iL1Sv)bivJ?f_V=+u(R^0`W{>|+j2 zVFRD7>Wq}l1*BD32`Qs#($Qhj@%q#LD#TMG21xR%g3fIML1zxcFsymc|F7 zl0QIVXZA&?*kr|yb)XwOIi(YFJiWLX-=uB&y$Ki2FCgWV=Su`Js zu|m1H!aT;N^+IdsE&iA)JV2$H zRphQQKOZSNi-aPBLi|U|${Ye}EX|zUpvX0OY@zlOl(uWZ*{eGn9bVC8{v|8&Oj~*y zcS}_|146Ya`ziCSZXz|NJ57l++J>l~DV=YT<`rIGY@dmZ$D=v3L$KiqHVMALM*dXA zj&=nZ{5f9JL|Nd)`+I0P~KQWTQO3E&qow-jWo6RNq35K*%`H!X5j0gm{)v!>? z50B@4ygd>j@{l*r&)8D=%t=lrC||zw3_U-$5|$@I`b|IESZk-sB9!bnkg%%pIaFu` zs`6A)gC`b)Gbnf1g`50PHur<3+`YwCpU4grIj-@b&2dzx0xj{2@Zow*b=+3jnH>7= zvx45&&hSt)7fMav`aI^ts^#kzWqJBfFY8iZg;t#0d!D+UI)7NMYI^o$*j;_)Pp$pZ{Fml5NHoxAjz`w^i|?y$ zk2dV|-h6nW;#WVOPi@=i=%`TPuAH!~?$xQaOS?9Z;D5!5uis+Bv~HiZMQ7fkaU-Qo zRMdMk(SQkaD%%@Ut_C@`V@K3{5G#Jc$rk&!e`T`Tt0 zAGb+k72b1G+`bLIJ&bg0zf)2u39BKNI0XZ}vp3`8KmM=-=?f7ewf^gQOU5UdreL%2 zDk3y~NL4VyL{CpZNMa~5Hzuuf)gDdDeCoszNbs>FC#KXpm`kvMPY(ytZ)trI;~^?; zZXR!<`9VH>eQjr~TvXKa$8)K=4VhGzd(Oghh$I{a$YWhZ3&wNjZ_+al=Y~IAoe(bF z`?OTEmedlqi!EPA2(+>GWxT zr6S@R5?ku)(_Uc%_-(DU-sQH$FoJAvWxVlVUV@nL;oENs90Q0XkGZHg>u^Y8Iyc!u z_ih(2Nmk0KO<9wwMr{-}i82Q2#%}6vs7E-Wh<-WYs|!H+2k~L|dw&NT2VuMmY26x+ z0T2+lpXA{-85j9Je7YGFcYi+XxGFxF^O2$S-0s}8 zN#nHb1YFDSkMw(E1N0;)Tr0M_`lYlpT9{XrmrC*Q`HA-I&wbo-^-pJ0T#6mG@9wjF z%S-^Di)Ld!>Sg}zt+aR_*DWAu!y0urTeuQ_?HDv)r=^q7%_DPTIn$}|xVEf)3U>SK zFYcBN6iI%yvKsgO+NK$yC1fqqO$J*(ZT3p6f7Omp$ECfC1mN~Qw*-`ockaB^@k z^}zs?1y)BQEmzl#MY1WPSU<6Nu?hIeB6pU>)&2=IV$G$8552p~>AwH;ygGB@0N_LA z*BA6(xPbM%I3Csi`Ez=PC1ij!4z+4D)jBncyXH+nC%E15u1nIVnn7e)00`f3iMfk`6Y zn3}#G-#Et_v(8JW<%>=j^XH-5hne=4RQ!-R6s#aFwSp*&LVVE(;q5kO2uKS8-G2Hx zwfl%hk>81Z6xQpcw#}I{xE`)zd}muJkv!_iU0PIu>S;zg>4zPx>d&kn6|+RdM?^4d zvE8ml;AqWF@EON`$ve}BzR_t;29N1SGl zT;zQ{MnhdUeBB*}l#y9?yOTozVJ%}Adm>gZkJ+H>fosNzW6b}_ zinyE@Z8TCIl|Y9RQv51-hrGS(=4N){Y*9;!>$wa%2#t}7#`U@C!R!n6xxT0FGC&HT znLQ0aOn&X+@>f($czzvw%Xl@7XLbi8t`x&Q3_2|**?%paI>jkP`T3RY5tNT#G+c~?r z`8nBswZ5i;g@qML8!SgAFdn?YirRl*K$nVg5PIMT45PXM*NQZDaQ~X4N0B=>f&^1A z+JActCGS0A@C$&9@S`RuwT}-d+9@^~ZKTqphX%bwh)P|r@>T6Q?b!4v-8|h9-bXv+ zZOr%@`V1l99Y;j9-f9&zU~?{e42mp}pqIpXCMrTFuJs$#L$pKC-#Hwu z%FOOxc<84oR>*3#oKva$y3Qk@#m7H1{;T4BwBrSgj+BkT)W#Mz;oo_}O?r3!O5*3m z#|H)$&u3#8^y9FVS&phIT1S)k;j?q__eJ@I1o(}y>Cc8H{r@rT@|a3yx@@q8w(K`t zlI`J|iHN{vS9fhOrUHoZH)~(%6vjJ}Q2#F-{bL{IQLl03#WhpA=lmHGG zFfl$d;&YJ1d-L4U-SNrsDMuO-{Ib$^V8LeyjFc`)WCvSlLlOLVo`-CMqyA_p<;f2ySx9san<|=!e;qc zT*~SE_O@K%@GG(bl$ex`*@8pEGAjTvgn>UUhcHU{7G>RUf?;EwZN@4)5<4m7U5zAT z!hlZjDd~hAw(A#>>fTA72td8*u@$?87JSGPYYQtCyJ13QlF7_K$d|MR|8jI%4iTVc zpN4u9Q;(NfQ7;hYv;G5xS0k>*hJ$lAFhfLhvTFkrf8=#0VZ{#JMk|?P+N+^%1DwF< zs3>73mN)x{x0@LoR3!goMtn+1la}vGrcLpF!mB;xQTV8}x^@lA8e$w0yP`|v419BV z{1^-o5WR?#6v1RQ?ZhCw@xoQD)=dej> z6}#&~NEp@F%8hIhMe5P9+eH@T>;I$b9fKol!$#eXZQGdG*2GRGPA0Z(JDJ$V#I|jF zGO=yjyXXDR`F8DJU8}0Q*He#fU-!#y)#`hV=I|Ebc_hOq?c(5YWa-#k4q9##eEVT+ z`zSjF#LzEkh+MH=dL#AEGs!TpW0Gg7l^2XM<~pUA3Dc9aPOW)U*Ezh%X^%ST{G33V zr;!ep{k)P%a8knw#(Av29?Vh4{0cUzEd(z{i5Q0t%H41GmS$5DP>}E8K8?s9PGEIV zC;thJx=1XBPzH_Th8c!nhE@@mhp}0RCv)3w!gl@P8Q)jdw7mHf(<{HHj;(<|2H3Vj zZ{E7Up@6?s9uk+_H+;@VzJAziRLixm^-r!Nsat0MRNG^lynQ2J5+UB`;N&p1ycN!N z=pP9GBd&HXiK_CT(+B{yq$5$iTq_Tpo{ODs19e;xF^T`v7f+V0Tay_0vlVo%{epSL z_if?KsG0bul>2#u-qNs7N$^5dgU$&HH*^dKt>Ya>@zb_s2b?fnd;Aj=4D$GsZ9Fa` zqAtsnpM;+B_b?0O%WcpnRHt5h32+(K!w5TDQW0F>!o!7LWuQ< zse(ie%d*HY4%4C#0h4wX-PTymP-+PCrniF%O0&pnKnD-bUM(fX__<@Von;41;}X)@ zKd^`iK|5DkPp^53%Cg*sQv=KR)Vl1WF%=^JFT%`zyZpJ`d5~t3k*DpI;HzYv`R_AN znWq&CMM`5EO}%gT1fDe$5O>Rg7-B!&YVvK@&C5uG47r(igd`|C1l|Uq(M&~6>^_Te zFDau|>S;B_AK5t&wNWUnwX>fFSIbfrki5*~8=BUdlY%a{sg5MT>faymIDUl*@U2)p zwq*$=61O-$4g6Sa50zo3WK<|xQEC6s{H#;Qr2=yvCUw-UOgJuKT6oxr{|*TqNyB-h z#n82BoK?drtlueR#waWE%f^zW7yl*#y~=FcFYNugC>JlB|9QLbKfMHgz?}~yaqQNU zKL7wB69yDFFhigwNy5cR{a6DgPpiWO*AHmFE0xg!2iGFAXRHby`XGnp32Er5FE#AN zFtEZ=hdchpVkSBF;})4%m;r>Yr2UqS!19cG2Tppb$X8PZ9!;dgs9 z5z5`S3q&X;b_(8}Ja$5E#Vxr6h8WRdkZVv-b|t6gr;bclZ-uf7yQ}OttmI!_3V&Di zA%n&anSObVxOb@lm}?@l5F^M@5!397dO@#)L@NQc#H3-d;WJ}$O)X!(qfnB^S|sJn zVffWc7UN0#MFO<5n5M=Kx2q#8?`DYX_a4Ob|1KuZZhduJZC+oOUa0$xH!808T6B=R z6NU1Ur4(Dbjf6}y3oE;hSst!SnCWf~n-+Pn)@%W2&#FWQn4=a}ZpQDwo^O}29;PSJ9p3mq6HVN) z{G4v|Jc$z9@06sNQ|P;5QD`^yD+d==&2AK47U%UEzWsA&Sc41SaP~c^gJpHm#f2Ea zHp|6{>~;M;_}`TR6mEi01nt`($q5O6*4E&#FC4$2)BTeE&a{FIxmIZ8xDMHJEp~n! zEZHidW>QbC^qf|Dl)F`r`#`7}4Bkx#Mo=IWM9Gh6Iyf?N@?a3sf2?k;%wY9oIUQNU zy)*GJI#fYaL+f7?<1u}iAp4+;t*IC%pV zXpdAprL@3w@!r|p#tQ(zOMwe2jmJm6fWi(Ma`+PwIXsn+ z6XYdC6eUFdBl_oP z%Bm54tv1j?xQ!a2&4;q8V33FG*TaLW&F4rhLfJ5@2)p7m~^=gql4of=inXlOA>_|w1PzctJv2-4*X6GO_>Ptg#5-RkZKY)!n=_qsuthZa37tn4^p#Y0d#p9 zSU46e6~VR^I*p#!CFuTvVu1uf;%RmiIS5tVZ)&N={$QFg$}N8OCInkow~E0H&SB;i zBGrSI??8)N{=q$?Rt`0t<1Th(44q_Ac7kEz)m_8&CO*)L)ocGUE0el&_xs2N@o$e0 zgP)cB$re_Fj&kwltB2zHcd-hhzE4J# zvRIfD62Ke=;1G1aa^^kX+%~i_LR8k#)|$k5ueDu9m|#3^L{#AUrojWv73E`Q`FfhP zN{=Ta!&yVLPtK*0#dX#jG%_IM75=G>668RmY(Te;Q!G_g>xg+-5V z-d59z8J?4qRt26;E%tq9w}Z~WT03OgfaJH-0GCntiICaB5hl5+AYCDmqp0d(b&;-m z(P6+!`;mGt!ELS|i(jejm!4L3WKA@3F^!iUN6($COBh}^veA+r5g5;U%4fMuJWfX< zYVxcvtqL(RIAoB+(=YI-GZ-?pvqeRA>V$w))O*vRn~FsnST#nOKo-@4;z zjXb78yPslPut9|~ts)8oKZn2GMUM)3Q+%h7OKR!(z&32oI1eqj2>5S1RlX~T_9r(Kc=!10r^}nQfA2e_&B}j>m=Lw_(-<$i4~rcl$P;xNr|A} zVj;GX{3@B~O|#v0{p7XyYgIav$eXLSSeASccN`1x-G2k~dc0hdi{j<%)ZFBscjS$L zu&+Rjmml;CXdwR*_bkfCE+P4eQDh-&xvU`p5Kesa42;(+vO*fWox$W)q{(wXc(;QO zNPk7{x>FWc`iD+?z$_q}B-A63;vkz;Gpz5J-y`9+O-(*^Z zWZK6YZy+aouzPCVhU-(IFvFs;S;}~$@UBGnVWq2~7GUtv>NgN!Xfne+VMtXw zFBgzT1+XU`{xgO1fqq;7AFWeurkof&9|8YpubP`VEFheP*Z8!(g%3Y~eJ$4i4?Pr> z4@ww@rN}gC4Cf55eBBg;fDmUJQeQ8WAG1AFQ3QcQ3KRVN^K4i`G=6IxGdq_$JmGG4 zw}|2lt;I6E*5AsQ4?CAIn`i{7D^GI5D400~IzIBQDPIGEQ+QfcdPNu!#NbA5CFs^z z^_Lnp0g0?ktgoSh3Mg0#gao$q;bGA>tAAhI^tyy(n(Q-doiQz;S1aj!$y=d8V3FdG z#FVa5pLJJp`?NEf6%A*KMZs?V!dWw4V~(KrVJNrz8E=HjsI4xG03NpY&19D_sWGU3 zOGDL6s@7{&f1!JsP%oDFP>r{-kF@z{Jk~p$Ia>j25;_Go2jzv?RaqT zdS}y2rGoQABS#_=V=2-3HMR7_U4tQ+q0!$q&66@i=(?42-!fODZt;qUS<0H#ZnLFk z4analr1N6P@WMGcMRLECL_=~awMo(JHEQ8Ur(YE$hA=v4+)OFS%lDb*9NJ#aau}9i z^+CD})`=3k`B@nR?nCiy;K7(v#HU9~g!JqS3r0{=>v?%$JiVL+(!RS9<;@`6YXCQb zejgS%&`=qu-JY7bLeLOD@5SiPXR5TBt(pI~Ej+?T5Vd1ATWMb7WlekcGTG#!Pw-t~ zdzoFX?(kn(zVOp6&idi&sX{Z6pmozC{fTSNpaQAR7^E6fd3! zKOF2nFfr;Av8!jZ$G+ox3=zM5 zRRFIpzCA7KvN+LUzf=!q-3~9 z_MXnt?rmhmqD@Mzc5_)@O2!BM9-@%&5ntF4mJ=pN!to)#F1zH%LIB&ZgiaoPI9{{C zib&Do77p~66BzR*}jcGaH)8mpnQF4E$LWyr-Bivd>bW4sO6>g_D6Z_hO%72=g2uM}V@zn(EpQnCA*u5LA_h#?j4;#m?J#*(@%zI5g)Kv6 zHmLl2W_6w|zJq^E(`{6!k5B6j+Q*g-|IP1wUCs{A1Uq!jjIVi5f5c&ZP&AkvdpD__ zW{@6YwUCtUTa_ZZs9>DNZ)r`EWtTafp?sBhIPgG-(u0D05R^gC_&;i@c;u28fmNbX zS;Gzoe~Dh2&6wi!%c7GC3BsH`v+MM_>hD))I&r6V313j=0YVkuOXiE-MUqTzue3ii z!_h`pPsc48++o~o_)K21bwrF1SE0ksC}aW z0Nf`lA{}CRL4;h`*=cqzi|)A3wxOzFP9IgZY%L;{os z=ohfO+xWHHbIMTe)>+v2x-!U2Re%As?13SajcY-C5FuLu*EQT#Rd!!`968g5@&)A+ z*bwhn`9a?(X%x9(!K)mty5D74m3V-C$~~#4nCv$rpPo%wd8<>hOZuNJVXGCCp4~B) ze>-Ua#Qs1chv%oF=nPT>10;xln+!i$TXymkqk2+md3~B((P1c*guts4Wt9}l6r-pS zoFO(Ktrf^y)tc`<(#mCY;z}A);qh^DzMgN`*@+ULvVs7B&jJHtoXrqWfMeEqbF4q8(Xq1<2hAE+kRO8Z}aa_qYa7;pus=V9!Qm{ zS0hM~88dY=ne$rB*_^}mdEX(CG*v%!T;NZnI5p&Yg83e#^{%s+%!?t^F?Ebg|gsN+aS$B z&{Ws3;bU%@O$dLP0>E)eV zwAlOkw0gFWxR)x(CCEeufzh|f`Eld4@sU{XI^GZ#L)4_hb2mlgWXNDyHgiU&OuJql zPKh^&#?@J}f9lo~>)4HV-!WVRA@q+~iKpzT|R<@ZQ$))Rl*4 zo?>btREauEw<_ds3@)6|ggp_DvF5l-Znt}DoFF?TOOfb(6Xww~8CEtKmFQ?qTSqWd zA80IP-iJCW4MF=k{DQTN+kngGOMAw@Wp+;XkwUQxe z0&1cYDmcFjk#3ehJ6C<6@Iy>txP8o0{ck__o{z`cF$D8t7n3nBH)9j=U(50hu8yVM zMSi&4RL2=16zuG8WZTSRI2PH8CYWUfYF>;;#Q zu^2_4eRDQH66Nd`5!wRNqs!iUsxE+yFyu8gQQ%#V0lzX@pVn3{8LtW_PW{;>tEsiD zDSMF$iWz`S=IQ%w9S7#gB1R+39(H_ts?YKpfa)%oIZzhE53D1`&R^!Q2q6R5g2~|r zpb5jkVTECHDJZG452QMF3ys6d(t3@N!M*w8=Gs)Z#>^i1kIQW|?Hv!=AWlsb&0^IZXO^1idQm+LO%3?a(#WNHjldx=l2y<1;Ff+4 zU%;ocyj^$G#2*P?q`@I0pC$Z>N{uPwj$LKcnOj@gS$TojszCYLS=Wh%LPlm^*(2Xxni`sE=~sBY(-~ zm38~-`6DTx)m2V$*PLFysmc_%b|5qroYu3WQ#6 ze>LWM^FBDYvB9Ur)w_EPZ3e67Jo$WOgE4#D3aS3^82h?bdY!Q(E%1+5ZfhoE^IDs# zi>;1bKxp5#>aXzn`?&MczWSIKU=d{6c(vOEr6pzQO9$dRxqN=hWhJt4Q9PF}wIM1a z@_`UkDO+XSS6?-RM0GiG>>!>%qSvx;@n4 zbcQ;EvbMiX2W3Ms;Rm4pfpoD$)6FX9Kg2VNVFLXXgACGac3v0eo*1LIvLQT`o-RXn z4k{e_V12#E=8RxMge4^ApNZ_u*UZ|6pwJ>s`~#;^QCDutCDRQK3+{q?I`Wpd^t=6b zyWj>~VyQLycHkl_&?dcDh%~#FzYbs+%l=Aw>aQ~YIlWXF_BUx z9~Itj#*eQAvopcUziKLYUj-wYaoH$oknNZ0brS|m{q?MsIwhY0v3E^e$5_k7V zpb0w`hSWww!08NN-78lh&=8;o;HD5 z7anfAi4@W)N{J>c_mjg|W8NpG!|;wjMT*b(6+19vf1e)KI=|Q9t>**7x|(hU;dleA z%Jdx?h!K@@Yhdgh0}IkVUcIs-ZzBq32xazrQDe#v+cwfCLpG;VkZODvnIKOnl4pu; z)Y_x?wUjjp500(dKT3M;Er(tfEUclokJJb~*wxt(Zf@rXtGW8 z9`$@4@BVSAwnHJL3g7f||00ZU>!>PgmXo2mlfR5XQlXR*{Ll{Y_HF$i4COcwAQTx$v=M_LM5EKSbc$OddAtt>pI7V})1ac7{#kQkD>z z);@cN1rje-8JRYQ@HZ-LEH2pK83X^n?SO(DaWsP+>QNTr0qbAy>F?SWeJ8IG6kkWi zGi3WN(q#~O3voZ}P{Y;4qTu*cJO*(lWHyjk$Q<+Xv_>ZmsKq(!7}`=eil4$n0~fW9 zG(eEgve0bo!)Ht`UOG4NN1-H!a-kGC)L-bWx-1>88PFY#2 za(`@D0P`*h897BvIMb?~gjH9)Q7;KMWXOT7F0BvhE<^_ll_ti=?JlYxAnYs zE^Uir`9BaNH$i055Mc>NlIwv4{X6?jy{AGk^t%uEBGloqzF31Ew}Vr;y+2dm`0tL- zJXW~fnl4;5Qr+e{YoWJm+X7taC+Uw3=%tMLmiV7*&6XwKR5h6DPaVP%kV2FfSQK_?Zso57hbb!o| ziRVud8y8Nl0*(Z!V@p-r_9>!D9_d@?$6+d?@n>hxgRlSQ`tU%)RU@C8?|p!e+54B# zcJ`ANTewSE-{%kYqSrQ?>CkwHSYmG(Q`;Z-v8E0XvVfUa1w>q`GPca6`DH<>Yc*#TOoL5)Dzx(~I^UPL?XDZ@AX&@v*`l$nTLmryrw;Q<<@o(EOAUvT zio0lQFRH_Qj3iX%Xug>r0(#HvJ$?cP9==rU=mT^>cmUIIh5-?jMM~7=xHJZWd6p>WI3Xu z?FXFKlHBd-G-y(IA=N=jyt1K*%$q_*1CQgC+g-!i^uG9_*rXG6Ka)4$KbJSQ+yEyM zkP*`y1@WUzN^m@colpKUv_U*ts)xOjZ9-}3==b2CTe{2h>qd}8dmI}`#&`P3LT#}d zOo0(YJXRhoI)+HRLUNG27>YIJHmZR?H=8>IdhZ zRpBPNoP4;QPK#+@p{p!MAVPfH8t2c!D#f3>!FX}A>|}0xwEYp~<>RTA8H{+?JBBEL z@MZ8?cRlZB?n+avu4(H^edBdOI)|!!vY()Jtq!Wj!0@*_>?j+M(|n83Ydfe z3V_pRuHvBzRxzc0WyZIHKI8PJ_V2PR@0#i0lgf)it_T6zUr&yRl{<4zC_vKv zjUqrc!M|tf#1W7=6A+yr#mT7s$98I5-GpG`n=#jv5gAytjZZ;^8`e|D+&K?xTV4hV zD^3CvJkfu76WE7E0p!rosz5Vem-wUSfUVNdEtA^53DNtnLSN!{vlEEBUTt?*$MX|y z%=wEfcQ%L5fC0EZVnevZ7%Dp5ZVonc&GOWN>2MX{@I4wDqzmN^o~;V6)>jNTI8)lZ zgmI92`T3-Ithi7qjmS`ld(-;*J14P$r86oUHvc7#wYzObvPYkB7 z4`0}IO512-(tebX?^%(q$k(mcEh|U#=oc1mU#YJ)wYa2j_b7&W;FbKJzFlkx@Pj{! zmt?@C5(4Od4%wVum|tE1nwbn`9F=yO1LxrZSB{R1d+=s0i(t-neis!_+y?co`_#X%RU8 zdT5)ABv4Dl3LKD=GENsa`zV?5#cvKqAc;mFCgN3#2j)vWoeo%VR&wyO;-W^5u-;?0Q+m**amh}o zuu6?QHh679mt$Wx5dkap<_pO=Q)kf8^y5{(o*VI#%gG3Dam9!GIQPP@BMNE-9uizE- z&8skF;tJW13stHz(*5%Ns8g~qq`|n_s8gG(MF*uEL5pA36ITB?})5_u*Om`-f_4p7AB^8c)II+XK}-)cF8oX)-EKw zu7Q=8J#-BNn-0&uTJ{>cuI+t9fs_dJ^W?Prtwke0e;lwYaYUa`MU$M*oA zysS@~2KKtLDDb~cahVMRM=kfj_KX4+pm&g}C~fK!Tw5p&(S9Z_w(E4PS#xCmbzbuE z$E{MMH|5kIvapz|mVzlTTmZERKnb1Ynk4>x%$FA6v5~C}W(CEb2nxpPE$GC;{bEA- zv~DNQ($=%y#`X)~{{udQS!9TOFm$efJ6bk8bc@{D9ToohuO$IW$O0ME-Qg5#<`lYK z9QLlTVYp1q5gY4+?6flY`A79Eg7Tva2e5p=)nARqA-fdHsY zOSv*6f&N_L2sU2;V849mF1=0bR6r(BcdM(LM4jpQ5!_;TQhrOP^uV0$=!lAr9t0H7 zt2~|W)D3j2gF_{yq*PD-BuN~zvg-NVSD`?$pk(PiZdb%Zey}*^c@SAPZQia^)#HE6c4sDCbV+DH@m-71l@N73Bjp({&O%Rm}@j! zd#Ei2W}DPF;j8QZ(AD$%`26?;BE6F?mQSAEzEnSBUtc|ewf7oBhINXaK&N#)Hkw5i zFgHfG!N~ zxww#0p%h3>U;p#x)V1SRXQA)`GW3eyYsJ^BVLc){bXA8Z$Jcr?C z2H+3*vuAaQhkgbN06;KjYRQyhal6baB=>Q0aw-ivcj%B}*~Xod*-2q7$3u-y9C zxccz@nv0ED^wzvvwQIpb$FyGUJb8bCo56#x>AuZOO8U#`c7?m)j|m=-A9&<(qTvAX zi-dtZwADQaF67(Z^QhqwVXO}F^X%^ugF@hk%&Tltl!JN{UGm;O3Im=YC-ZPx<6#+L zDlxQfO=>YS^y3=-2l&4kG8Y1~V9RiOyyU-b0SgfF_mw8US;5F$csxEl1~v~bE*2*} zt#`)2MAx{~Kt)4yOS)*inTl2n%Mh26lglfeJxkQCMvq{Wgm)le9xPIuP?5r=Jfa50 zSB5SG#-0=APn_@39ouM~wOfRX7Ace(3yWVZ;Kk)7ij<`8poJzWDN|+e+#^OPE-WL9 zB8&gkuK)mSzrP~~KW(nLwcj?58IzKBY~(3bNTOyex7)~v(N?04bxAR#S}j#`IyyS4 z)oALdXy1PlZI$FktWu;4$0Pft`u%^yS#rwgB~H9U2l48u_^Qqh{if<2cQ>c(-UV#c zuGg}0a$`ZQMTbcn4N`(B;rrLq>y7%~VSM=zu$WTjW3W&k!ToPMadWMp!^=PIdQ^YD zx#;K+NUg5gnwik6R4l-TkaD^?SVdYmhmh9VZnR&l>2&~U`h5{WKnh$Ga|Ezz2zc=R zhd&Mg*h8`HSB?Md_SO^^A0Ey(B(=1(=5s#2J{ccJ`fArhKQWx5sA!4|@25p!!j0zU zj-;U(M@xc{h{Z=SD#--_Zmh@MjQlUAslF0|$W0EFKF2*mnNeT!a$}chN+D#A9x`gN8{jr^Cbhy~J3gx^Mc* zTCdT|BH@M+-OTjo)Cex6Cj}rb`RgpTY3ovO?Hv2g4HyOb|8EjfGVvQ&z9duJP-sYmtt@u_oybSg2|JNlCT%&Jc+ zk43wO?^Nz09`(BZM~I*L+VM*3q~2$qK4M7S!q-9InA}%tqy2?UXgBM^R2MpTN<-eg z*yn1lUhCbeXo%df6c*~NnZ%t zIF7iP99)t(;L(RsH918~+ zQliY0*JBMhtwMPib-Nb~TxTj&8!cU2ZH zb@yFpAGH99oaCx$Rmf2;+xg(f#fR0%Y)C2~E-P8WZcq#8y8&S{MVX~$K@$Tw?78WeW1?OOrpkxebT|f zAY&+%rq8QD&=;W)8ITe5ECX#(t3(oP&WA`qt?}bsgA})jnZAieUN%By2%K`S+v5tE zpS)|oOxE-+I@D+Z&9&OkGv&2Tr;}5l^2DVN{rh7x!J3#zu9|9AT|I_WddDM%Q*4Tw zLND7_Y2i7votX100nM%%21aV_T5N9BWdqB8L{fI9ba3_Fh$n%NkVYzl)cd9`dr86L zzC~3sz0BC8=b`_x8QOETzuv}^p*tB7FFJS zylZYVM^5jVbiQ_HzM)I{n=Gj#)W^^bE+&?m=jDF3va(zEk6OHNK8`(qn|S%@-_)Fn z=nzleW^{%Gj%F}P-k zB_H+mpb5gQN-183lk4_!KT8VyqwvqLsA)$N%HCJJDZLGT7hgO@GXNel_?aUPQ;>Ky zf1L!Z&Z+yFH`;+t4uh zeHk7Ms(i5(5bgvBH|=V9^q|?|RWb@{BN0n~^yR5uQ)JbuguK0usN=b8n^;!!V7(s~ zF!zmkz46sz@3u4J;6%*feRjw;Y1n?w=CGLC?Z z@muB-PfJZ|sM$a^!LVDU=G5bH>o)x>GMUaNo#ufl*H}y~=vjCgMgL@w7wct2VmtWg z62F+4s}iMH>#dCrfqoEtAiDQ#c2wTbf8ZG7q{8X_VR>N^eG%!&g(@~(o|Y!$5gvTO z6z#&M%j+d$m-#jhquV2&O~`P-i=bn}xw>8*qI{RHRtC2xEIedgVbIvn)_k6_DIGyU zW`@y9$;nEk#IVO~!DRJ3&ZxkaE>-ZE-k}R^^Ae`4vzyi^cOqTn<~yJ$wlbszmPgv( z9(h2g(cxug07&G2_zJmtFG4jvp6T{#|0C)tUYNywd)%KjSSVEIe}GSfcXee^)wxjO zge(B}1Qv{(KfoXIkAoK*CVtl|9fVvjo5er>F+J8zTd<8Y+v(BibXcCoG=MI6lhYNy z0{TEFc(P25sUg8GPJ@j0oSx>m#dq1ago5!;avJ?&7yT=7>UE z3w=4$?1HD!b7Dr_}=^!^Wr~W{ruYBE)+(F z{ViX-eZ{tv2peoqgB?<)EFI^$ts!M$l*OUh30%;aCL9Y~mKAVNKm_bHrx0Chd;B5i z)4U0-oCBT3Wp&k&$<6TC$cEcO*woi#^Xh)EXsGcmTn5HHMkdRt5fks9J8=d_&?Re7 zBTlGA7_`NinTj7`+M>7;b^YDbXYyXhgR4VZJf!T7_O>-J0v4|Fahr{k3=oPU=_#y^&^cT4DPGb5u?> z8?BaalohUEi9g}I-M+GT9`Q!tGCG87C!KdMuez~$4Q9gZ5(A$>gTo-*s@_9nWbd;4U*?Jy3C%C}`*}D|*iP{W+?MMh1e|XVSh)C+gQzI=pi)UZqpk-9 zR`f;y{Wj+lwcEUBMJ<;^6n`cjnVj~_h0iduRNgA4AniF)Rx~G91zajh5Nk{-cYHJ> zv{ec|GT~`r#HekaHCuMqQ~nlZ!uh6_Epl&6LS$$XK7Vl_8ZK@GjLm(UIQTuuz}cq2 zBVho&7rtt7T6TZDkICDu&Y1^c-4<)ozK#DH1AgGREJJD{dwR;o7Vtar-6O!TS!MLD zK#1BHq*cFYFW6>AIUP@+%{25I9Yfe*Ef%mE814!2XqjltiS0S-mg(Hn+WyAv^K8F#l0e3~rtTXx7bF9n@~Wb>AC;Ru55)w(L)rY9XcMv#gK++sq9F0Dc~yEJI3U z2rMClcOH80c{Bpnk1iJ%rvqh%R47w1(O}01IeN92a3of77qX~eWEeJcm^$!C6ZShD zi62Zsjx$Y>OgxbWrF?!SeNqfCL_?w%ECDK{(cMama5x7i(CR;L!0gSE`4kr4hg$A zt zURc&)JalB-9(E#66B?Toj%q9S+GCn0uFhEfN;#t20MM*&5dg=d1)6&71>0a0+5HH&_|>iBBvM zu&`s5JDM<{f~3(8*@MKoS}t_`+oS4f^+}6K8D*Lwy^Hj_2@mpOn<73!GqD}UkyZ0s z`bqzEg9#WWlK&dZs{398!&!09T3XJc{bM->rikuRnME1*x)K=cF*6=H(_BT^fv|FD z7?U#sKO!;Nk?iF#r$~GpZC()h)r&@&#K${{i`_w34W|a?7M^aDzp9toO$K9@O?@9f zv-e(;frh{#3>x&aFI;!Tvo}gwi5~uUq-jrAE77HwhObqV;_YT3wf;lJG{f9R(A<#_ z-iDY=>e#bW!CdRQUhiNHR6{iYp@{O4yKSfCmdFWev54T`m$yH!B%B6G{)#9Droz(= z>$XUV!srreUEJB~r5}-^%9yZ&+LZniPa3}7k~v2ETQhRY24$_xKj=i3j?Yh6 z0b%r}0}hk@d`vi?xK;gE$!H3-wi&{ zza(VAq8KiAe8aV73Q5kw9&5UHjSW(lR4E+%tHbVP3fmk1Ynf?)tJ2Mpw7@V8jG#Jw zaWt4MZRZkiwsmpjaCD6^Mu{mBSw?&kwwKY?ta)!e)5HZaO$3{QSVc4~J?XA;ObQMH zwGFy=`;3*;=mwmy!lQf)vEfp!t9pRs^CZ+?k;5E6SYd?|ktF!oUg6*V9u+B=+B?|#8vlv_fzxU)+ZbzzPV=PmwLJc10`c#V1p4@G)*hV{Qog<4z996vu`gpmK>VtBF5}P&9 ztbN%uw$)=HBsg}y`Pga)t>t686IHIwsq<}T=gNZrqa4R6FY(g ztFW9)w0B}2JJPg zVP*qayjlhp9x-A%GX6P*)gX!KPUiwaOK5c!w5=`AMELw;r&DGagcMhujR19jDq$Kf zD<=8&m@?K_Dc-HQPc!&EPr}xq90Ts1@S-3`j6Q*~!9h=JwmKWgE5M>|i#;gEGYu z@tdkwfGO1vEWOQHQ@)MH?L-VCz_r?{A-*0#RBxaUIdV7otS&NSqCnRja_9_{hrc8A zdp`%Rag_?HRueh*=W8S6K142pmoL$%@tzOh-ZeF3SF7Ie>f?x-NL>BsqkBy0BE4og z-h7uV3A2OdCG*os00_l-UkkBJ;_yAbmMmoh^sQ(ZeFV*1K2Q6-t3@hK_#G>o9Z*e! z%|2>1U>e@x9?9iYRX+P}BAC<8%RDcfy}u8ahb4rNa+q-7c&;&ascl&SfW{N1oRv-* z4=-L7^bptZji82b+^z-g1 zR5lyE_xJbdlnd_K-YKUr!Slc&W^~ONn;3tb_w2Xg%P@wo-8~ORZ~L>K9Z}_RH)>UI zDKtz6zkI$iDOkO9Ts61%GCSXzpNv|%9JWViE>G9Z?L?p*RfO6w4XtaxbThd*jb~gH z^ER%=r-at)DSz|pfhqPF#@*!kZu1jOT?PFt1KXnAWd~t81Iti9<>fSeul;Wn0*oe< z)5kGKqP(E@N9eG8I0dmOMB)X;R9WmnWo+&fHhyuQU`|bIp#!Qo*7wrzS_YCMi|KCV z607DandNr&^s_oV%6s*uDjQ&_mYL`-PWd+<)!bG}j$+~;yNvo=l+j=t>~@RI(P#oD zPY^&0vaba>m+`k8$SPf0cNn8B;PCT0e`>S!TZtldfM$zP3iQz6ptG}c?|2}=fUChs ztqu#0GCFYqv&J^qK$?fFk-sJ%2rU;W@@KGF3)8gD-@ix>{L z*R=s4xy8a;n=uz(osR{blW*NR`#KlAi57v=`hB?*$m!;}Yy+HOdD<20gMSELCe7`G zu(GETAjaKn;&BA+xK|HDF(Q+@$T(bT_omJeHC~W~JHyv|G)5SBKRgO74m;%OU?yo- zJ6E+|kcuv%#3TsZ8ZPUnqmYHe2e6oSbpNrGE;oh|lLKaPLSJ-hZIX1T)MR96lFPSsJy|VXyl9q~Hlf&+EKi~cbyBsMO1z2yF zKlNP=Q+){z2Aae`cY;;(?!^Rw-=cK79i(ds0tpg$ZQir1{EpY~e!JTHOYDDp9(@;e zJONPd5WqI|wi)Gy+yT}NsF{8t?l}E>@ZY!pvB>^=`aki$|9vX@Z>#;E)BmX!@RwxA z#1tq#JRaBa5S|Dy-IvlwO9*59Z*G1bKS|j}n(iR+m|jbJ(e7K1f|De+o_g0@$Y3%^ z(F31p@TU;oKV5<>DvgQP9?0i+QH({T&IbGOpD^lcy%g0 zZ#pu?-ZgdW&I+SSD=P~R2YJ->tT9-(QvB560xc^>7Z)IUynFr%i{WMQ&GRyXh(j_(3Mb3lyRaOh8TQ z`+EV|v7}wMXJr;-3q+yKDi(*=+5Hqrsu3Hi6Q!&1DNllAN(@G!pWRG(Zs553_YH#X zi|D@d9)V?WXAes}&I4iXEXZG_pVmDBZg&$|E~&P)fGj$A6dcRHCI9rt|L*Mk8*Z0e z1Bn~saErv@#>H}O78)fCv{ZOpge#=`xclEFtZ7qRxG|~ zDY@CvqO`{lox1`+40YSdZ@j&iGGo>gN}AM~=_%OG)4=j~d_9UrAi#fSRy|;tducKw z@!3spjjK+xjbDetR;1gWl0H=uDX|dsJ?3ZV;7XQ!1WMY?^TM*B^+A|bX(nqE z`yHG;Plv{@;z8v6U4dDjSw6v9eL*n$Scufqd%gyJ&uiJI^1jwa`$achw!2XtICY}Cl4}d_Dh=;*xaLU3fLsT zMucn$?>6P8yWPbSRXd+Xc4)L1N>H3BV}F}vi=kD~jK>m|0cSoS-3pu|S#wQf<91~^ zcAmjY>puzfFcaa!H#0P=x4~ji`hI7p`NK*Nu`ufiYfnY+OuYCS*(qq}^ z{#WlBdJcU@woLqvCsbi>{OJT&$8I3>*fHO=pAN*J{9fpP%!-Zte$!Hq{%Y2vB+{V^Hf!|8W9pH`EFLyA%Qx z4|+878J8aC`s;CO4@h=#*asSQ1$lFPb251B9R5k46{>eQhdv;*5nT6mYHZS2oNvr6AtyUfov+6!+_ z(dD0~-&McnBHQJW(QOgrj`|wsl0SEHuKeB>>R58M1atJ~S`tSp&sl!_g~(VsD0W_j zPem<`Lbl>Pqcli9lsvD^VI>9i*{x3}xG?YsK`3T<;a@)a*#`z*=n5g?)GWegl&LN4 z+%$!bi$@V`I;4Eb2yNM;v1S4RDmpFbE>=3K6dv-Y)}{zM8P3zp%*1XF)9`6dMgS3V zV5F-Kna|MHuD;@7FbRdK*NI5DgGNKJGL8VMIpycN-Lj5X$%WQOq5oXAu6F@9b94c3 zt-mg+bADO(YZqI}xHkz&kB2|Mee-y&08|8Au+2jf*4JOng*a+wZGOC?=OV0YKUQ6C zkA}0qH}$dhF%X9~Z+^{D^1mLUx%a|>xH9`$rpHX#cAOB^v_6zViEX)zJ*yYLOI9G$ z`OXz|JC&B$xQ!n3^l~AJF?wqG$R^j_Pv=A2r*|ya$2jfuFeIPyNY$RFbzdwSvtwlx zK1S*y8n`&%liG#*Ao{6E=tL!cronXh9*RKk(Q*IJoM2~VlnI(U$@rH$^VN}$zE^q@ zA-wL)U%ePFuUDqx+BwoFl5J3Z8V|n~+Nn~O2Bs;x$9bs`3J}?SQGBunPS`bW62Jpe zA*yNn5mo_&_6_JVKUwk{Kl(|N?8op-1TUw|f`_N8Jn{>%3#0eY31oHB?Ss3L-bO+L zUC!Td6{2O10yKNVf)h+Etz(}g>2Warj5A?u9P`^M0FgNNbz+>4aHsJD$5Y1Dc;pv* zhw!RnaX&!$1RgU(_xmU z5SYa}0f(5~*cDRU`S#=1+U)Py**SqZp;s!>!n={0eQf>b%}EK?J-SEq8He3oBp$2M z85272 zua}$3fN}dyjSQ;^VAMF}Hr%*VISN&%PBVm!oXF#$mj@*K2WU_igL=#!IjjdxW$~&| zuv&I#Ns8?kj%U5Gda!R)-IeeH0UNlzkM+%d?aJ6x*>|dLiD{%*S)aP0S3K3!r?|_t zKG(Mv-e)>whYcOFf#^ieT(HH|6Njv5%&|gtlN`vN4AU$74xM^wFdn4g%pXX>1$)!V z`wAXC`r6a?!qd|JDrri}xpeMza#mcdCltO@H6$%BX*R6BjM1Lz>QE)2g}ILc3D_`m z2Lnh^BPB#08s!B^f#_31Fnb#hNT}HBZt1)vP8esqSNA%*BN_iX5RDG*^fYpCokyS#7*dx zz4Lc~gDNw8>p8SG==*n83IWv;7x*-3Xn-guf(HL}*N_<}FMs4kv?jd7^g6!V3=!>{ zP3=2>a(Fij9K?hKHAbMN!@Ph$Ou`yqj+Lbs+XDu}a--gujOQp@q-)v$mxE74+*~$# zbjSdoy<;!t`4bfryzpbl*s?Z2W`bgvF>A{ZteMEXuSIjG)Vu5fQhLbX6vvsdiYgw)Th#&77e^VMD6Cx4+ca93Cgva}Z{7)g~5?=UKud=YmT&zMD}l zs2aDO!%d8wmDGoJQOi+}kzv0@aT)n1K&!)W7EuqFt-(>2LClqq^gE65f?u1{;0Dmj zPyl3-J+HTW?T9|LL@=+>GGsY$%}P&BA7J2M4km060Y&Qq4i0ux4`{KK*?j=3)AWIz z4;wm68!E5#ZFX#k=i&^J(vzCsvsbX`P1oKKv__LTM$JqA8YSK)+5ndxUg)85HgjOW zb<1wWuNkbswlQeE``t?O7D<;Zp|=`cGgvz~6ABx|5Sqttbbmc{TG`H9!*5%wKkvpc z;pl~9ba~UIi6NZ}ZtTtpxY7fu;#l)$BuY=F|L-EX|L7yo{`Ll-8Ui}UsF6cVUH8AY z%u>b-h11*4 z=O=o2_`kebhG2Y?YTl1(pYGFIxdIquDG;-hnU0aOx~y!?sE!*y z=6vNG4HeBmO;Ymp>%;%+ILGfMHf%@m;=_F*meA**Y31wuflDtoHWn;^i2o~?YsYK9 z-p?2F!c*;_0Jv!`f?V$GR&5guAxe!gW#OuPj58X9Yd z9puz3s2rD>53TZ3>hQqswc^@t937c1KcrknkGIiPT~b!bLpWEwIO5xSGOi8L*|i(8 zB#b5svKi%t+s}XV3DQ(<_j}&zR7k5k{PxwqKI!T-Oqw(d#tS`_=u!PocYb``Qwce@ z>1+d$n{zUKk50|Guxz(m{CC39h$<4tOS0en3=C#t^?dT`>tVYc|MhxD=eT?hoc<0E z?taj~w`}ng;}O}h;L!l?p686+ns|vR_)|g6zNlx zH%e?T>u~~+t?d>#DkDaBh$q9CTBCzsl@DJ9LFynZ!KNW1ujvB5_EBUxOVymR-IgKZ0da=|!zcZKQ0L zkk|4tZ~f2(NlaR4J=eG#Qr6IL7a=ZNVc1#HeKFt_jq_`iXU5?6r%gY|J*x9#6<%@R z`jtogrpksbFmOfJQ#kxjg=$>yYh^PvY2g^2p;q7Zm#C`4qiLiQpW(1$zU>RU zPh~XO?*C`f1G+;Wg22Ee`!nXBJBUUa;S7j{CtyNF?3O+twe8dq2zt^3bm95mw%&6Gdx1}0C1VF67<7%PlZ9xH%?+sJ# z)Ai0*LrxbwpyxeB|MTjy1rIL+6%{qx=Qdnj?%$s=VO4)6>S;C97$yWMF+a8;J}Lymc{!m;KvzL zP>qcH9q}fFsS&m;3<4YuECmblN>=I5?Wx+a-z7d(p3_X8*=9HKa}* zVd*_*G&VLqK%4`?pFi)u9-K9#%c6p6AYzZXnwBH}8{W6!jGi*~4uBNg9sL;O$C=D$ z3mDn!&)GFo{7#WGl-Iyx^W469SiL)wykGmnCkELkpu3B}Ix_m<$mib&>}YQX0TGKM zlsc!*;_-cS;>+~P+PZMluC!})M>k}`3{U&3TD)NY#HIL^)74=aP8$Kn?PH}w&8{*# zVJ=PGkX&_Cu~_YrQPCZswAycJC}{wBNei=RVGOpH4{zj4e7)OTMpn}T62C0)2LVD>V&#h)s~Q;^xRv9S`zkesOK=n)J*Hh~Y; zYL^}7Hma?}??o;p0S5y7{9iww`?A-D8&xG8-3yjA$*%?2Mfa4qjKNy-tUXHUNLVip-Q@7Z27%Wzd#+OF+fHxSIB zUa8o#MROK^6Q0=~L))Xcp`-F1eV9WR??hG_=I$&>%EzCT@l=tcU-0h%FEah(e_Fkw z8>@dLQW-w?3v_vKce7gJT>*DKXcn(m${N_7TMGa-eWg@NA|9bjv3c*IHLZr~@>?Fx z*l>#&$tckail`fp)}zP6^X*m=(1<5kSIn*+2Y{_unoS2VXjr36uw1K~JiJ|2=hm@v ztSkQ%@0$Cowwxym+)BZOYEMCV_5Hg%X&Usfl~uWzXP&C+5~d86Bj!m&)Pec23Emle z6Gzh+4UJM7IugM6B&-Xp{qagJX{^w71VJ+RX16a2`y0F?KDOB9ivfJuad34><*_q` zkEs!{R=~pJR#H4?XZ5tKf#5Iwi-~^xytk(uBE46)PVe4F14D#2eK6?x?LI1Hz4JJ1 zZ^-cV>nX|bpdMF%-0wY!eH0pJXHcroUPlR0>`-u1_n75OBCK6afGGL+rY>lXpSjCB z=s@cXM3{rdNx?>MDf=Zzp7p_UQN@bjo8#{EK@fs7;@0z7!OYET`!Ui53=kFyJ{QEm z&u`m=*Ym?G)|^5Om5<%U+|kj|)D#HegjFU>iy0|o^V)lk**$8&?BeCCt<4AQ@nI9z z1^sXKR#r~*47OV;EW?V7u~d~I!~_8ept z6j;F01|1FHn~sB73bT>gv+J{Gw)-Of%*}#sPKOAknBRCcw*QH|JI)2K+xgf)Z7g&e^p2r{Q#fBTpMZ0z88;3p&G=GJ=4WUq zZ#=M(Fl-{_2=6#exHk`@8bw7qCKOOscDvsRruN^4d#i^(TiIDk%A_72jWAnaAw_ob zoNJ3%kxeo!nYiV6D?)*f!ghMXPt-eb9jqKj9H=b|Y@X0%_*y(PO=+4YmQ!LChU= zsL=O`C;ayghR;((@MHRfo2uI9)ztVHDY)XKhj2IolxX`i-`>T=%FN~dYHFuAh2`n@ z<=p+|PSf9?-N3m7U;*w8=rwCd#>85wx$z{*7$U^O<9piXsnLFx@N8>;d%Ido(_{rP zkR?Z5vx&vSmA@r>0rmivwl)l?aLSU^NAbCq)G-xf%7#%LP(^!#_F|6>fP>_oZ*O^@ zV~Os`BZl#Db4%j`hJSbqVvC)<l)hmw9$OG^*%*uaUk%NIpb^sJ;LMXlCik zNb=c;$HOsDNo4O%xnU~3jD9M#$_nD9E{r$ZtmlwOL7jRw-Fg$)mpHccC+wUFg z9r?rLZ!q74Nl~HyUIsvvBnjk*oL!#qZdJ0*JzJ*bAG^&8aj&u3Kw#}uMwEYF9!!x# zNP$NeF&d5$C~8#Zn4(P`iIts%r2>H&fc}dtY4*($$8=ZL_U>2UC>pu_j?!>rHjjV} zBtG}b5I4-s6{g~KOI8mx+mF^UoV1-9;M{${P=?{Kd%rfj=3to$FY{yh&~DqHV}%yV z!D6JOY1b&WK5&aTBRSS{(cFH%cMRva^7teuYvWI;bF%6rLV}r%*VxnuX3?u9-i(X< zI!MYuDGpn8+yQ9D)YZFjuszL)v1NysIBqm(^N6nJCC{X@m4?9IJ!TlmwB^4H89YEb zG;9xe5&T^TC0f;3evI=*yRD%}tUfks7RZ4xS<0Tf>71Bu9~)hp$znMOxyzjtBTe2Hmkz$if<0>zPHX8_a?aCe^H&4hmU$MQz25K{i2TE|hrpjy*WL2Eae zbvM)XY4D8@54t`MNa~MWuk?oV)js1kt`gsRSW?8x$hVc?y0D30iBIv~Lrv`*fSsqr z(>Wn8&d;W^0Ab?dWX2vcpU`Exft)48mHUi6?S4Vmo`=D*^aWcm-vpxd#53VVPol~SBIG9oH%S1gt+~3c7;rV~!rjyq0 zw5_c(tXR5QS=uigg3$9&{sM42)Zis#Gp3$CpQL*TbMkSz^)w%8L9yiVheRvm^vrNh zMcJ5)`%bdvvuPNccVA?=dMudFEEt$3Uwy8zQQ&!iZwl_`3{_l68XP90iz{%gM6dE^ z<4w%<)7_E6yJz4Q+t#{Oa^kJpU~0&K(+YJsY)n8Qb>8?qOl;ga1zX6VvWJJWM zsDGUend|N7H`AplXg42#W7t(a-|PkV@M=7`sHMhkwRf@$uyS0FDlhf;-K44K&;ntH zO7@!`x@TxM5Wn2i^O?BYb~Jrb!>@<4p!`1mG}zn0K+&J!JW;(?+@?k<5N+pR4x*!{ zBocVf)?MyQMDH5tsk!+}q&M zt*49+`JgqxB3^HN;hF0cmBqVg?B+a<-$CtoSk7Py&Z4z2$bmu0M*Z z@Pk$u%rx{=N11x@zH;&jG+J1{#3J(b%qzMwQ)Nc?u|fysB3OVcR&aF7>N_}g|EO4^ z%PcQ1KX7XE_c?y5>H17()_NY!=n2Hg8)U}?!c&&Ya@y8u*lpW{M`&3}VGJduraD~f zwcHH>Y0NJ-T9lQQ`yeQe9`q$0+lZ)djxy|hoc^HIX~28@FsjhKQ#7j3x>MBIiRaL- zDeoeGIe8zg!f}X_;~_ffbYL%a+5I!H-NZ*av9h|&eLHp--i)K=XKEsd^mn&~qSn)U z9Mt3XbVmN+>!n`S3cSeUet<2QjbK9M z{I(UYfUBG!bT`Ez$v2l&E;7Q8gZzUU{psl-x%Y>8zSkJ1lLMtDJ`85uMz^T%BtbG3 zD%{RzejVci#RR?yf{J^4yC4-J=EdMQzA((OgSiRjDppXty&cu|#IgC=>C3H5>`Uu4 z2;tEO{ptB|?wF8BI@T8~fd9xSENh4jB_BIo1j6=RBP$JQi3Ogr(^>nXEV&mqS8~Ci z{p7d$$E+?6TM&(N1d9%YWkjCV^7eZAL64ThS1H#PzT;<#4!4V#!hZhpS}%J&(r-%( zYd(MGA6^ZAF;Q>fNribP&gw1|Ndyj04_o{9%(3;2m;NdU$WYKaohGxKyy=h|nOV&0 z;KNJRy%EL48n8T<$hkS?!|V3=x)14bn+!63|9uBC0ypx&=Uf{=;O}8isn4U~ez-oQ zXWRRle~tAsuCqoKaihC{IEh$5-FYvz1kdVP9wj7S6a=9&`*OXz2D8TX(c~JRKMJMO z_N`e?c4}*Rc%cd{mH0zg?^$$tyt^l->Sdvfj)9gLk&{7gKn6JVI)7-mDHg}U%XcPr z8cmx_HGx!x6K<88d%-P>|jHHi_DU7BNz7cT%XV}v8Bm2tYv0r zyIoy)f(G{9+$m2_3;LXmr>OT*2nue$z@7WQ*?%F@iH47vEP#LnPKz<7P?V5wwcb3y zCMoK`L;5~tZ<(;J?KzNBQf9wjkkbdE-jQ!(&=$02miWCk`Gb zm2(hLaI%x%_)JMTM#seXVJ-V~$Q3n$th%TkBi1br|d

b6IF6=S!#;5P{RgPs?h}~nk!N7jftZClte{Wr>go37``de=HMkj zE^sQ(MjfB_+up2M!lkB1gy@a>%H3&yeG6+=@ynsIyXqFYOi>-}^e+=ZV8o7>B|#;$ zGv?g5;9lXdIL7a$$AmyPdy2JDGhk^0uyH2|NI}a0x6Pe?<`}~5_RqjlMMJE|n>nhG zC~UBog4TFyq~T<>2#t9?xJ=~2{83}!+AKB1+1StRDwZ<}Y})q&55riNwUD&K^!;-m zUc(E&OHPn68&~mU``w*e;3qz-44gHMLF)KPMyEC2x9mrk8d8)UK|nn=tp(ynl`Nk3A3M;YuHa zUB>Cm`>3hXBpgG+F^k}^IqrkL38GEq>7C!nIJZhc!T_@1>LqO!>(nozv8zh9iXaYS z%pHr1RsDK8_17@BqZpf>H~p;3)L_r&0)^QYz1LytLVCP^kpXCA4c1v;hOZAGb=vm>i%E7XthUg z;vq)$c3b#K2XJsEtY|cW!(b1E?zSvZ0Jo=>%qll1{-34UZL_Q;{)^phbBF+JAP=>H z@_VWa5gv1z34o6Ov@|d2MO1eMtHpI!v{(_wtP3Jw^2wZSjnkj^K7)ZWcUC8(ytT2O zdd;S!Bzl#p*3eQ0A$MPdlal=YvaJ?H37AFa&CZJ zR?j?s&e$pRS=(NNSCErT+X0Q{y+^mF%Z*AkD0)~Vq&yn0K}gz25ID1gg~4Y7M3*s# zb*}~Un$v^taP;Z8gexZEP%j|Zy>#R8)oF!6e`uY)e$=?Q7$_OL>`sm~kzJp;?)=s% zgN#6mgf|HEXT0-}6WggP@5BnG&b&$fx?C9ul8P0)q6XiO?oUAaS0YAD7MS?IKAfFFU9$N#^vZSdp=(k`oO5`uCB6;Yw*Ela$Duwdc}SidEERFbM*Dyw>}0T z6btw4{;x5Zoy(CUvKLRn%y4$dt}$$t@42N$qB^1U4x7-((Itr&shlXDfs>gyz-ktv zXBQ?#B2ff!SaX+W^)LXN@ZEY@DoPfEct=nRW*0J zAj9-UfcPvmAhQE0R|6Bmj*|p~n%85aO%d z>)YLpb$I{(L1@ZxTJacoB1_*!Fr1p)B+WrEf$M;Kbs}ul4FhB>&-kp*C7%<{ zWwlYNl0c1TnzNERW&<99gwbiLti$8%M@m5>mfFb25os|GkMzLN`1n0@?dz*v%N9`h zm2ca3~@E5e@H!Bw#)LL0sapYGVq1SXMi0D*bSh7$818FWbn-i zx2@%Uwk4pI+o9*;;k|djO*3JM-X;=QGHeW{g3i-a^d>!G^kJE;$+~7r`i)E+K!wjx z+GrIyy7^)_)m0R$@x#&uoFoj1n5}F?Zg=p;IN|t!_MLfb499Y^Z@rzR3#_*~=k%(T z#bovN?oZ=l^|~5ZCHPl+GL7Seqaz%BuMwxSFh^xTljtv4ILh&kLbKkm91K6)*f3(j zuwW3XFAI8l5?-$#?3*69GrF%yN1cTdaq}Atq1-&?_uPnwe~&QGZ^p4*-i_( z#z$J{4HDnku**4D<5t7=-Bg@)tLRe(TB!P>|FX#g8~vARg*za!KM;s~ zcbZ5>KRuJv>SUd<4e5ewscMVk*!OaD+LJ}(^YruiiHgE}!_|tBBjNnGy2CdI zGvfI00OO<;irPOB%Z361r~;K3Y8J#p>=h~?g71}T@uBwL4Tt6gAT04U;5?GTs(Ws( zZi+@mjNqc!KOeXDr?<>E+dxuxil=BQ=awVEAfHQ!U!_V?%;CVsY9(EM!w~SWa)v-g zj(&qdVgE=Jhmr4#N5QXZ9BX>J5IwA?t`%l0tNlSnYAk)_NRg1IU+TwK{#x7KMo z5WcbeCTI=BgRFa5H8ROuT{L(OZR6=eNae@mhYgnvl1MywhCWMIp=Focd>5nkaK621IE&`Yo%89PN?`x>{@~4qqpQ!6-L}ptwjKi&Q#LsRL9on7PapMFWbWo4M{6+5f{14}! zQN)5|j4UU;)4dMx%itk<7n8xkG9!S2)#?==%y{TnlyI~Te|N=t37>A$^uY%txJ;o{ z!8=cyx9UeUCz(jNkia~Vpm$qsxDztfDV$guLr|n$R ztzmOkvVm1WK^I8_jrZ*!>=9}G7DR_#-4&@g-$GV8K3Z;iW@T;{~k@Au?O7#bX(M5f$l!jrIi~2s<3KS{4jMREaDmC)3P#!22RqQCwILLVY zPE&z>Kj+I|YkB8FzQ&muZDrhX(1bDF0<}K&j*dDSCclWimCLNrdCA@WVh0hQpy22Aic($l?qa{~Xga%}f;g>8BW`3nej znJSl{+`iEiy!_y(S_?_qknav-h+?{7hsj-b=>HO?0}=~E(M8NOhtkG{XP1oe)cz-!8vi15h z(lLB}E%}{FA0bzwiiD)&-{Y)-(CScKk#lB^gkfrWm{KbZ*`&0t>0a;r9jf*3TW5f{ zxsqB3NOVGyl%>VUI=Lf#cC%dmW9tmJxq9iv*5+;m>PI;E=(buK!o+5m&-(##Wfb-3 zd*8ByM(=9($b;9PBmYdabHjMuIj%w!NV+!@HI1r(g8}c~hT+|>u|ii3L7so!%hFE~ z@}oNcFrZIdOqvX=(a9x9I?O$A`i)PnrDwi%u{X$aGF+9v1v9*0X&Yo4H=hqQG)HW@ zQc%>XExF8eRS^Af_QwZ{bg4?29#x*_8Zjpv1v1%bwHe*Yk0ipBFmxxq+2B}zHKr-0 zW$FmQ~?J)60Yhn9`GBF*d6l45g${&EZoveV?N}KVMnbAwkl&ijy)iC)!nx z9zQ)|I>Rf3yrxrVT>c-&SocC+pVrqQaYdyzK zO|E58uObEeGdAlD&b9)6pZoKmChOY@W0q|yd()DQwH1eBsTokRW3^$ z(&}8pflf>gk%AKaEn&Pb;Hx+$98UZD9}4w<`5piUpCv>=P`QP=eULYzUUi z*F1u&;M3Y8>oQ(<+@*l{hA(T)SimPs2e7`8vF(m+;(aYWiK*HRH>X|K+g`pIestF& z^z5@<8OR1UZ4<D_~HTwSiKLC zEp3AAKqNgLPZrY9rn0M5ksN`Q_I=Bb_G8ID(g^ksgi)=uqoYp&69>YK=& zZQiWvyM2;5l8NOljA)F=9{rBHsi&4V|7a*{1p z5^C3<@GFFCpSwcYJU-sBTuX`b1sqDDe(zUz*)F=R=$K$MkDNkZ9&MXUKoXYFfy?Ch z_)_fjx3!g+m&~@UtjQKM!LPZux}@)_kY^%ob;8Atb&G}53x6uSDcs8v279UpIKY5FDpJ| zoCQh|fS=hixR;I2zJcMa3C;s%UGROq0{dd!^*4u$9%!Ozky(R!@47IIv9K#0L^(J6 z?3-+z2zvrxOXG1?-lTiGoLh`&&zwr;MQc5c{)u#$&YPzUpq_0!G!0|H2W)==mr%Sy zIw4`e+Y8F~A5L!sGw4q90?MI9jV&o0$)S5y1B4(-)voFQwfeqFH7tCVBUW+Y5IT9` zf^;w)@*#GRlW$PJe*FSzgf6DUm9x6Ew<5#s<~hTAQyX1iMh;=Z;cFn#0vB_D0U3-i z5HTn%H#B2I?_k`U7(U;{(%ORg?N@n`I^8q;RBGWOX*GY_A!WbngcD*SP7LZDhA{ z1sU`!hKa(kzK)z-01aMZNK?oydM8Ssv}3E+E!@^E4?i|3?Tm92ixv2?Hr2>wgX@fl zwLM!^hGkN1ni@nz9o?}>KM$c?-*%N>V)}A2}a7%YSq;2#6aVhC)L__ohty z;X;w5dTSqXEC2d9n6ib;_37AS27~k9`oW__FAOWr8)qyKm<31!@?Tv^y37%hP0 z_j6r;g|@zI8Xuq--!S|3`l<@|KKk;x$8u9o?9W8$j34RYtX};c=A?>V;O?dF_qA16 zF_VHOUML9YeYb4SNvHaeRC@aKyN1(&l5a=Od-UW_2To#PYt9vw?6-6G9vdviQ~F?} zYZZ4;iwC^u>$Z<7N{#l5h!z#jb5L}U83C&}&MC-nOME#>cUxAppKCBLu7 z6F~#WDW`vQj?_(1wIhU_k~$FgSw(J-@3c0EH~I$S3pXG3^7<<3J&wYvI)$N@bJ7+9 z&I~lC!^q%bpr^kIVI8nz9nCLe6wz%aw^RL7flzH>NA|FSiZ0d)7i<2KP{w(P#iDf+ z0y1TE$~93pF&V9#BTa9mxBRIm^5k)UO;~j*Y>DW+H5|2264C=eexW9aV-&ewi8nQS zDD)XJL_tuE3*jnuUxHs{N<=%HVNiMWcj((tL_EHi#Q*>aYI4%1qQbo|1A=q@Sg#)? z6_42`&t_56YP{OtPHc*V5p2v4xCs)!G#O&RU{o0>wDs97EF5l%H&3tavb!naQ{(d# z^iSUP+BJj;<=+OG5H~V8F0(diw3UL*6pTPnpN?L^e<`U?Y8CayJ7 zSELs;sP3M1>TEo;K?CVQvEg-nnETUEVz+7Qvsl)q|K%HAKIJ~1i44hY7&fWHxu)Ux z_~-EL63L}Xoo;;EJwiX5U_5Yyzp{+`U2JXdwqr{;5Ra8^(d}Hz)wX2L;9_A>pT|Fi zN14(P0D90}-`YBBw-g_V;LdlCL|7^_qo-1ruWbH8swQdO{OIm(;cBvQmwyCJ==0R# z)wP8-b+v=gx2amwnbP2tof^0pbtO?H+mB4I(Z*f=VU@Ogre^cw=6AIwy4mN;che3G zO2o(|ShaIzS#q78*&&%^+o?$(f9>gOu40qP`zKsw6;Mn@8DH}WYybB{vLYOo=L9Mf zWu*mJu4BJi2J4mAB%Fq#gxcd$^}V{tX1meN7KRdsfpS;2k1qcg`GZOg6tviI{Z0z& z{hoJ5=i~BK2m3@b)QTxSleLJ&mX?F7DY=O(rUz56;)shxdfmEq1DUJ0Hp`4ZRBx;F zzgnG$Iznpq=NKTSN4}s^m?(XC$?J{u7eMi3?vWY2xYYg z-7(!TN8kpiqld&*FvN?Ay#z|@ps&f!F{sFSSo&QW?kmRmI2d^4DvHm>Lwb^T&ZRtd zf~`Vpu|NEyipwYcWXMFL86umAkg;fafmJOgwxw zzD45WGs7^Fith?nsGNc1>Q)Sx?-IvT7>v)HL60Q;30iRkDDq0+r5eB&0u=ijf+bS% zl|RGAX*8-hKtmkOMM6XaKkl}>ekfJH-%bhP?5WS?L&+S>tW$g|(TeyTxH^G0d&NfC z>NI$#ppr+nM|0aXvYp~{mkyd8_#=_l-JH_syH8u`{e)Mq@~k2PWmmRUz0zUpsEaAB#%$4-&zlX1Oi*nehl0I5PdHlkH+l3cq)ZSc1@qcA}zo za|u5bQux-xQUl{bCYFD`z0X#jK!TUH!Rz0=CVugCl*tZa$kBHy%Q+!RH{%jWX@gmtT9!6!xL!~I35rtp)%29!d`bDRlr`qJqSs>2a@e)lw$9R4s%uMcB$N*WGf5^ z?b?3z)9|}_W?a{hLN0cNOhi8WWIh$`-iD&WHIs-LJ@je*U*~tYkNpx?!^7CMr*OwJ zwd{mS%}8Lf_aKc^uxLmA9=glJ?o0%mqJnlURikj$KHgFSBPx1ZdyE{iq~tR88osUc4-;CVgpD{yGg~S&y{~g z&LVZi95|WupOtPLssM9r8-9OCbps{iJPadtr?xZazDVUb z{o61hp`n5S#Vk$Mp<<$`yQtdwU2~9(y$0xFLsXs;942A-!yyizaR8tJ;gpgZ&r~vx zf$mdH0qTtSsmZ_197H^d0G)s$EN&$x#vz`FhzY9q zwKQKEf%r*<`G~aNa5Hrzx?IWkPmFqOx2F;m;(>O{KuX4sW6fo}C!0GloLy9JnX07R zhNNjVtl70Q)^A(j1t#Z_kOl?-pwYUrhRG}SSp$71kCodwb&MRMut}%ifYjZ_S zFvXP-cdB|PVkW3o)ztk=9<|5PO?hwt$o6qROq-mmsZOI4u;1U9Ae_^+kn}kada*;< zZNHYR2z)Y=z^Vv#a|rP9#;U8DxPhThMz(+sq~1$ zMn8^`e=dctuGlcIIR*lP8H3&vra(cvp>y%->fe|tN5)GYSN!Jw==n-oNNz@tU^lAc zktRnVsHb}y8UY7OtX89AXwkch>K(GIcg!mBo_ux#5Ez%=d;gQ!1MvX^A2XFZl%1-_ zjsV|_zOkrkfpNW6kQdb6MKEp`OOVguhv%(V@OJ!b3gcES7^r7 zBB%QrNUrvd=hM~9E}>w(r*;37KhvkSX9@;>LWc{d-`<2HoAtOo+HUVe?1IndZWdul zJrtzh-^Y{LAG4ff?0kmsDmi@adDbpx1Bh*gk`WX8Cb_fe0TqgsdtW# zELa|RC&|W6Hrm+P*tR#eZQHhOb7R}KZQHhA_TKw@@AW@3{W<6Kndz>sYE*yAa=`J3 z`Kg|Y>wKLOM?#{%)~1=Ivjg8Awcoudll|2>QNHVtPo0O9!Tis<ZR&6) zmPGSCQJ|p#4lQ#ksXv|JW>1LehdxytGA!OzU1mQC-4EOp4Q*$%72=54J}IhT3*ZW^ z_!`392BH89BL6H)R<2gmJv}=_>Ifr=QkQ8@j%SC zUjtOk95Ol&j$bl{zW`8;Gjqm;-Pxq!NP|Pq&ni99Q@&r|HUf)8!oRGwyR3eYV$o3h zqvL>WKTF>pyoHgvf*|w>__Vx4DGCgA1X)p#M5wfR^;Hs$oAYPZqw9IYg! z;|X1vTbeaX3yym|6vXgmkix-eR#P&Wmo{bY4d~}9IpJFM&!%oRH2u2Y27~yHD9NW+ zT=IUi6;88p?i&i|pciM=pQ8^gtd+}c;!?JVsRmJ|&KxvpRVpR+F(A{yOd%W(R08ceqC5d;oPd8y-0%1yXON&hx>%VX2-iiP zr2+<1W{cD5cDyGX79{@2Qk8m-u>I=aoas&7=UaGz(+=3!1!O(i(3 zR=ycu*ybFA=E!Et^C{!vw3pA`L3VjDZ|uk%a5T$a_3!}&fC`=hgvG!yF@qz{RnP~G zRkD5hAngx~O|M$J#D9^Y@tYX^wf(Elt+im0Os67g{fuziu8J`*|eeM>kF(YR2Q1(tv_j&s|a7JefY?0_uExdw7Jv7)9?ZtUypluI^9|%BCY!gZ>$(VxR zB7K3@iTF~97y+1qv+jXYhyHQwcSf~t_H#N-d=ryjOuIE|)OrCJx?Bw(sX>0pFgKv&p#js@9 zo{AfoqZ%@^g{`m8q>t=tR?^P>3$)xC&6Z-kU%B5ry8nAU4vx(kH8xMlxae4@w0e5t zm`$4d0rmpRDvA;k0zZKuC4%wC&H-hL4?2{e2mu5OAYMwqz>AUe62P1c;#;sA4Bf+N zg0E|bKQso90$^s{$#kO)heYZP0K5W>fNr`Fxm%%1XA5TqVnK?fKA0=Kx%Pq6^*O z#8{za(*V<4U3p8btWCAgbm)%#hUSc{ZS;I_+HCF++H!xmW4;zYjmlqh(_XXdr+op+ z8clw@7v1=rXzXliPuGmlCGG5V4t}kmD!P~NEbSxbUQK^`2-19DRjg2Gc#SSy96?IV z9I`6A8qzh$j-e^MP;F@Y?PHcn@DnNs;{*nk^S8W4*qj*(e%ZQ6@Xer5po!lcejHhqY0w&}ZLU__aJj=V!$lfSRj$XDe4O(< ze9%VW>7Nx!9Gp~1-}|GPUxuM2r<8um=3}HgRT|v18J07=m02zKklx#q=8-0GeuY)P zbXc!hZX*-ip{MQtC7Xc^Z5py;{Xl z_4s|jAwEo)t!eex$Y3P5qMbx5ecmzcLrBl#L1lT^o0%Bfu!WU;(i5I4-{Kni*4Cvk z^2b{~kb0%r&G&V7s}#JO!th3%2Flvg<~#}m*aw}a>bT`d45n5y`Hgd%DPQNP^!O|| zN)zYN9M$DyY?I0X=e_L|DNL))GA?UKBcVjwQOI3M6vUbP}}UpDhZJM}#9dDgK_ zJnCVuZ#NW6h}ICogrURY?$R#$6Dkn7SKp83r`TOqvepYRXbydTgXjC?4hu`7&_$AI zxA~!cws-Bw?E%Nz1MLAns^uv6)8yOy6J@Dd5jlfmg>Inr)dnIMz-%S^b5&50A`tk8 z(H$?D`VSo+TT%7sRe5Si6z7wAD_rF^ODhC0Iv|LzD%e;F^#Jov*UjUAA(RBxaKkuw z_bzS_n`M6H_q-Wb2IVU9BpsF~#RhW-bm;|R+|fUA!c5AhqUe0c2crG2-|#oyyl>Y8 zgSumYKEre{N`dZtg=|o zErS4`+)K)?*CXl5Ue>r-$#nlS=ggDd4;4&acq;M{gnR9^EyLh!P=SmXHkx&ZGTBPo zp1&!~6jA}d%{sPj0j#>f%n^`MT8ZJ=Th2SEaM9hnx13JUK!i5ok4|-sm}r-jh(pyt z4o6G3G@ zrLgEapnH}6^Zd8Of})}(JPy*z+@&@;2O9?iR?}&8#5!DF7J&%oQdzQjRIG$Tc#5X( zDw(xQN9m*H-<8}e!EN5H9sOsCBA?Pq4G+Ow-r22Y1*M7niePup`Uz$iLjk|+3f-j=~K9JA$LK+1fnqlVm(aR zrA34P^uX<`e>vf8&-zNC1=$e*x+T%atym;b3du}AO8o@g*JjvZ86-IU!SZcBVnz;u zXdN^zB{pSbjlOal)&{dOnYv=uoXZuDZlcKIhWrpYsiBWGI?3o^0HS3h7LI!tO;?Eu zKifkVl$~KuY=7}^HWt&)%sF2~fyy9E!A4E2#hkRvG3V5~y6iAO*~t?oIEu7l`S^^( zXyN-IRIkRe-1F3VTl?cS(K6BhB0wW^pA#dZ zQwS|RFn|yg%$(2k29~`s=L>D-(!H8B*)}Uusm9m#J9WIcGhqCrCGk9alO1%#6V1`mnbDMy_y84eOY`7N+;k?+f}g=xO@OtlZ`Gp zyiaoDO$+1m%ytb8HFGPVdxnI=9?#lq=Y6&p&qH*>{aK|Cn}U;8f3wlnomKE>)gNr^ z*z@$g1-I(Qc`q+DIZhUP&tKZzPU^Js)=LXh>F$y~0pBC94O{b8Miyt;79Ud<47W5I zEHfo_0A%J15J~b>)-xaJ^!R57tVIqVK4O4AEL8kfDx$IHI$L!EB8emlgGo$NJv}^$ z30K!w43>v}|D?PAh=dEC!9rdB(CFEfCx?{)KyC@2Wk{OAL1Oc>Ch0K^;tk|OA2MDOeq~qlC#@*ZN0i!GsQb2Q5v`a4*qJGq z9=r~TCC4?#D&b*CS+mb*nsKd~(Y6Mj5Fvr4fh55hznveB zeKy^KYU2$ZQ^Pm%$4?y@ z>0!_xz&fltzopYX88Dt5S>Cmxk!A_TDClay0045ze;4u>F9a=-9WMpFEZrM(AI=vQ8B=}{?#f|%i;3x zwaW7HdPOD#m6UX^g^LteGXfMK07Q;%<;PWz;>w!q-KTohvYrk{>f2NUqcBG{%x{91 zeT6Nv-&h{294JU@-!bvF`f?H7O$7g@J&!Lp6&$2IV*;G@jo$mlo0r`HfWOcmz87j` zj4nrZVntJ+jfHin`n8rKW>#0N)E_TwhvJq~X~enuc4K?O#zQf+bd8lG&TnhfDg8k) z9r}5fvSkxwjTqly_gs$_s<&C#xsc zK(9ZjY^-#rpO)uDd)U~Iqls~%-2dwMpQnr{%}dV+$}J;Izzl;WzY@~uIE=BFs8WBS z(SLXQ`RLH)0`ZXZ^-4_0(~xbxKe%TyOr$6kA^f&Qb_$Pc0{86-h}#u3(w;WlwKqw- zG8`SaPrn{BRl(D0b4O-l{{Dmtp{7IXo--VT8ie{45rG}dgG`2x9_62`zGj1ZHqC@M z`y)QtucaA%Si&}l^)Fi)k9t&+|IJV1%X^PRkw&4ipQMJVpzR1qAen7tFc7CjnHZmo* zBQ}vj3@OWSt$L@Ld4QbbG#M>jDB-jWV#U%ydbz#mU481Ovre)4c&o-a8*t;bi1iEg zAr7Yoam=2rx)RziQ9Hylum{u0c$HuBnj!-UTp}3~j+rFz2{R`skyVo`Bq)TCDAvyA zl-w{5%pHID7s1Yz3Zo?FYA%kNl*JAUt!ja7fI?DCx=*snCdAx$*m(<9Wj$>kwH(EM zRp((zWY`a)Ct>}UBlV9I^9r2CsqtzzwHMqvO0U^<`f}JwFVT1JyOhvzIF+`ea}hHz0BzxVL?DT%|RpeV1nG)4ge zCA7n$ z{jVE&J4}q{fgKUnlu_wJ&!J2exBb<5og^+>O*9Dx+MHSHG}EOWnqJ92fb4&GIuN$I>H(4{CR7{Svr@f9Y1@yQ^GZQ?C<1}RLk!1E89aFqI~A7& z>3$gYS*;h>RdX{SsKfvaa!>EHx`cvEHw640_Q?u~BJ!Shs8<5E7o$(6`x7l352!qW zJi&*QYDyN;4!avk?3u1Z!UGRjr}cFx`C)K%uao+l(v8xIR9BJ(uX;T&q_p;fiV7Vk z)ai=bN=LZWvsyk?E13aL$t*p{WznO?I(w(Vq#uiA@SGH1$n@kZ^)Av_L85QLrrxwI zTBu;cuKA6gsOv*PpCGmVB-0|>a&<~8Ok*GoN(@phAsDae`&PNfQ zr2uXl84R!Jz(@ol2?W8$stLMz9>rs_z@;M{Q<_;Y?aZr;kb(LKv`B~}UCpe;EW#9$ zSi1IZ%y^&hRJ0{2KCx5tYqH3zv+LVxzUb2te!~s87f(E)=C7P_V%-|&Aj?MP%!W## z6~*YwQ}^dJ7cXip_TBP0^U+7WMih8VV_DRX&oY^RJ zpS$%SwW6{OT6wA|@XHC8Q^?j1)jjK~3kT5+5+9?j)%%P?acjiGlIv^HP-5@CnHUiG z2_^mRmlQD&al2}V!JEY)vlk!xhraYzr;jr5_O;?G(v>i*fn*Y~6%kv?Sn^4r#fS@x zR#z|(84T8mxg6dhGYH*sJN^?`0>?nBCX&R6;OvPLkPaq}t@>5mD13&MY+MZwoKt29 z+Zc*zkoO)1Son8shEk{&;8*?)DKI2S(4VSBbgey4`4HAcvXC%I+p$9nH6034Sn6~$ zWi2<(Fr(XP$8a}JulVR!vu$3N(5_x`LHe#qyOA_Y%sV=Yra^CSr+cP5_NS?68~D+e z-lg!5fo!kmWbb?U=#QNb+mAu-8}G<+DvoORBfhb-wKE%BwXcAMx#G=Qutq!aQL0BJ zuN!+&`D0hRsia^feK@SntMm~CZdo5tMVZ=)U2$_dw3f24Y`0T&Sf&M@t%i%2Fv;|c zv1HxN{VJNZ7lWINnXbod=%q~(_k~)0A-4<6}x})s_Bu2(~$PI~eGSoV0^77Q1KT;`BF#+Zc(`q@x1lO#^>A>-Tn0gN&7g~+TjLbVa!jNlWExP{Cg=5tzhC9of#lR#v0_`A-zrOFkPF@zK zR5^t`RPNz+Hu#`Ud$76R{PZ5(!2x8pCx!Oov&0cE_l_3}7zimDQHK|65Iv$szgyX( zzlDV3&*8)g3k?TT{OF~UrR0UxL|NvOnKLsJQytBS5&ccN#BQjh#Ske8b0Y)TxT*c- z6Mg`Z!`6`>z`lP#`>*b~?L(D;viim4=e_5a_Low=*>L%{2XDDosS_E(-&H8Sp66J~ zKQ1PEz%0IomG6RVz|uewG#gq;nRv)Saha%zcE^(+lYHUuIQaIBSHlz`$boYkzaA9y zJ?}s=!IJ`P2$2T}Og;FGuI z)8gw18-R$67dQ0e3zK0MjB~l)=5{H9if)D;!cRJv zPy8L*^--i{=Lpj$=ozfhJJ3z5!N}DZY*{n&>%wRxqe@!6v)tXd5mqG^;aQ$uahZ|| z4-wyVHfXw=TBvxGe05c|MK8Q45q0*rEpbu;$D3>BnwgA;gamfC5Y*DJlE%L469kfKjuc z=2s?+?f^P3FBM4-cV#>{9xwBT(C=KM9%u2|`&G@z*Hv9#x-370J|EGnBR{qk3cT(> zT)^TU8RNg+@4mH*(8+`c`}aqSA#z-eh^-@*kFK? zQ3^BmIlz5^n!Gn{cjwiTf8qzv-c=Wge=}M8YVA;hL)nZhq9e<&O$OgUC%(Rb_aGnMy!qS|9OqwO)0@d zn~cWK6Tm^+EBNgDBQ&fd?%1>{h5Ywu|Bxa0%c0SB9t0vJWdtiXrm6JCbcEyS{JOE- zxkcnCSfn46RH{JA``-4$M23#A)|b#|es!CUh*TPN;Ds)$lkU0(YX#H1CQj^Yk6Y_5 zP<(+widhK_77uQ;0V5Dx5a(g`E=O^#Ebfe@)_9z_4dt^-faE1ZR~gRq8=lX&;hcm~8!j_w+x`HWQ%Tv^ktQ+cpX1ZLsk`_tv|uz( zckuh;O*aeI6&fc7v#w@0`8~+}gr=kAyMoUo=P755tfW}KOXGDWx7#hB�V>4f~5$ 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

D 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 literal 0 HcmV?d00001 diff --git a/grafana-docker/grafana/dashboards/performance.json b/grafana-docker/grafana/dashboards/performance.json new file mode 100644 index 0000000..407b763 --- /dev/null +++ b/grafana-docker/grafana/dashboards/performance.json @@ -0,0 +1,373 @@ +{ + "annotations": { + "list": [ + { + "$$hashKey": "object:7", + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "InfluxDB", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 4, + "interval": "", + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_type", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "type" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "performance_request_successful_time", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "90_percentile" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Request Time", + "tooltip": { + "shared": true, + "sort": 1, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:237", + "decimals": null, + "format": "ms", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:238", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "InfluxDB", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 24, + "x": 0, + "y": 9 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": true, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "Request Type: $tag_type", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "type" + ], + "type": "tag" + }, + { + "params": [ + "none" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "performance_request_successful_count", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + }, + { + "params": [ + " / $__interval_ms*1000" + ], + "type": "math" + } + ] + ], + "tags": [] + }, + { + "alias": "All Types", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + } + ], + "hide": false, + "measurement": "performance_request_successful_count", + "orderByTime": "ASC", + "policy": "default", + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + }, + { + "params": [ + " / $__interval_ms*1000" + ], + "type": "math" + } + ] + ], + "tags": [] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Requests per Second", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:126", + "format": "reqps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:127", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": "5s", + "schemaVersion": 22, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Performance", + "uid": "1Mar-DTiz", + "variables": { + "list": [] + }, + "version": 1 +} \ No newline at end of file diff --git a/grafana-docker/grafana/provisioning/dashboards/all.yml b/grafana-docker/grafana/provisioning/dashboards/all.yml new file mode 100644 index 0000000..0f62519 --- /dev/null +++ b/grafana-docker/grafana/provisioning/dashboards/all.yml @@ -0,0 +1,11 @@ +apiVersion: 1 + +providers: +- name: 'default' + orgId: 1 + folder: '' + type: file + disableDeletion: false + updateIntervalSeconds: 3 #how often Grafana will scan for changed dashboards + options: + path: /var/lib/grafana/dashboards diff --git a/grafana-docker/grafana/provisioning/datasources/influxdb.yml b/grafana-docker/grafana/provisioning/datasources/influxdb.yml new file mode 100644 index 0000000..8a254bf --- /dev/null +++ b/grafana-docker/grafana/provisioning/datasources/influxdb.yml @@ -0,0 +1,46 @@ +# config file version +apiVersion: 1 + +# list of datasources that should be deleted from the database +deleteDatasources: + - name: Influxdb + orgId: 1 + +# list of datasources to insert/update depending +# whats available in the database +datasources: + # name of the datasource. Required +- name: InfluxDB + # datasource type. Required + type: influxdb + # access mode. direct or proxy. Required + access: proxy + # org id. will default to orgId 1 if not specified + orgId: 1 + # url + url: http://influxdb:8086 + # database password, if used + password: "admin" + # database user, if used + user: "admin" + # database name, if used + database: "influx" + # enable/disable basic auth + basicAuth: false +# withCredentials: + # mark as default datasource. Max one per org + isDefault: true + # fields that will be converted to json and stored in json_data + jsonData: + timeInterval: "5s" +# graphiteVersion: "1.1" +# tlsAuth: false +# tlsAuthWithCACert: false +# # json object of data that will be encrypted. +# secureJsonData: +# tlsCACert: "..." +# tlsClientCert: "..." +# tlsClientKey: "..." + version: 1 + # allow users to edit datasources from the UI. + editable: false diff --git a/grafana-docker/php-example/.gitignore b/grafana-docker/php-example/.gitignore new file mode 100644 index 0000000..48b8bf9 --- /dev/null +++ b/grafana-docker/php-example/.gitignore @@ -0,0 +1 @@ +vendor/ diff --git a/grafana-docker/php-example/composer.json b/grafana-docker/php-example/composer.json new file mode 100644 index 0000000..eb64aad --- /dev/null +++ b/grafana-docker/php-example/composer.json @@ -0,0 +1,6 @@ +{ + "require": { + "league/statsd": "^1.5", + "ext-pcntl": "*" + } +} diff --git a/grafana-docker/php-example/composer.lock b/grafana-docker/php-example/composer.lock new file mode 100644 index 0000000..ade40b5 --- /dev/null +++ b/grafana-docker/php-example/composer.lock @@ -0,0 +1,79 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "54a6353042ab1f33202309a7a67786a2", + "packages": [ + { + "name": "league/statsd", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/statsd.git", + "reference": "c6290ef6c7528b7b739b26ce6aedf81ee6a4a2ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/statsd/zipball/c6290ef6c7528b7b739b26ce6aedf81ee6a4a2ac", + "reference": "c6290ef6c7528b7b739b26ce6aedf81ee6a4a2ac", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.5" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "League\\StatsD\\Laravel5\\Provider\\StatsdServiceProvider" + ], + "aliases": { + "Statsd": "League\\StatsD\\Laravel5\\Facade\\StatsdFacade" + } + } + }, + "autoload": { + "psr-4": { + "League\\StatsD\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marc Qualie", + "email": "marc@marcqualie.com", + "homepage": "http://marcqualie.com", + "role": "Developer" + } + ], + "description": "A simple library for working with StatsD in PHP.", + "homepage": "https://github.com/thephpleague/statsd", + "keywords": [ + "graphite", + "library", + "statsd" + ], + "support": { + "issues": "https://github.com/thephpleague/statsd/issues", + "source": "https://github.com/thephpleague/statsd/tree/1.5.0" + }, + "time": "2018-10-09T16:02:46+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "ext-pcntl": "*" + }, + "platform-dev": [], + "plugin-api-version": "2.1.0" +} diff --git a/grafana-docker/php-example/example.php b/grafana-docker/php-example/example.php new file mode 100644 index 0000000..2cbd5a0 --- /dev/null +++ b/grafana-docker/php-example/example.php @@ -0,0 +1,48 @@ +configure([ + 'host' => '127.0.0.1', + 'port' => 8125, + 'namespace' => 'performance' +]); + +$ops = 0; +$requestsSent = 0; + +$startTime = microtime(true); + +pcntl_async_signals(true); +pcntl_signal(SIGINT, static function () use (&$ops, $startTime, &$requestsSent) { + $runtime = microtime(true) - $startTime; + $opsPerSecond = $ops / $runtime; + $requestsPerSecond = $requestsSent / $runtime; + echo PHP_EOL; + echo "Runtime:\t${runtime} Seconds\n"; + echo "Ops:\t\t${ops} \n"; + echo "Ops/s:\t\t${opsPerSecond} \n"; + echo "Requests Sent:\t${requestsSent} \n"; + echo "Requests/s:\t${requestsPerSecond} \n"; + echo "Killed by Ctrl+C\n"; + exit(0); +}); + +echo "Sending Random metrics. Use Ctrl+C to stop.\n"; +while (true) { + $time = random_int(100, 400); + $types = ['search', 'book', 'login', 'login']; + $type = $types[random_int(0 , 3)]; + $delta = random_int(1, 5); + + $statsd->increment('request.successful.count,type=' . $type, $delta); + $statsd->timing('request.successful.time,type=' . $type, $time); + + $requestsSent += $delta; + ++$ops; + + usleep(random_int(5, 55) * 1000); + echo '.'; +} diff --git a/grafana-docker/telegraf/etc/telegraf.conf b/grafana-docker/telegraf/etc/telegraf.conf new file mode 100644 index 0000000..dbfccf2 --- /dev/null +++ b/grafana-docker/telegraf/etc/telegraf.conf @@ -0,0 +1,212 @@ +# Telegraf configuration + +# Telegraf is entirely plugin driven. All metrics are gathered from the +# declared inputs, and sent to the declared outputs. + +# Plugins must be declared in here to be active. +# To deactivate a plugin, comment out the name and any variables. + +# Use 'telegraf -config telegraf.conf -test' to see what metrics a config +# file would generate. + +# Global tags can be specified here in key="value" format. +[global_tags] + # dc = "us-east-1" # will tag all metrics with dc=us-east-1 + # rack = "1a" + +# Configuration for telegraf agent +[agent] + ## Default data collection interval for all inputs + interval = "5s" + ## Rounds collection interval to 'interval' + ## ie, if interval="10s" then always collect on :00, :10, :20, etc. + round_interval = true + + ## Telegraf will cache metric_buffer_limit metrics for each output, and will + ## flush this buffer on a successful write. + metric_buffer_limit = 10000 + ## Flush the buffer whenever full, regardless of flush_interval. + flush_buffer_when_full = true + + ## Collection jitter is used to jitter the collection by a random amount. + ## Each plugin will sleep for a random time within jitter before collecting. + ## This can be used to avoid many plugins querying things like sysfs at the + ## same time, which can have a measurable effect on the system. + collection_jitter = "0s" + + ## Default flushing interval for all outputs. You shouldn't set this below + ## interval. Maximum flush_interval will be flush_interval + flush_jitter + flush_interval = "1s" + ## Jitter the flush interval by a random amount. This is primarily to avoid + ## large write spikes for users running a large number of telegraf instances. + ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s + flush_jitter = "0s" + + ## Run telegraf in debug mode + debug = false + ## Run telegraf in quiet mode + quiet = false + ## Override default hostname, if empty use os.Hostname() + hostname = "" + + +############################################################################### +# OUTPUTS # +############################################################################### + +# Configuration for influxdb server to send metrics to +[[outputs.influxdb]] + # The full HTTP or UDP endpoint URL for your InfluxDB instance. + # Multiple urls can be specified but it is assumed that they are part of the same + # cluster, this means that only ONE of the urls will be written to each interval. + # urls = ["udp://localhost:8089"] # UDP endpoint example + urls = ["http://influxdb:8086"] # required + # The target database for metrics (telegraf will create it if not exists) + database = "influx" # required + # Precision of writes, valid values are "ns", "us" (or "µs"), "ms", "s", "m", "h". + # note: using second precision greatly helps InfluxDB compression + precision = "s" + + ## Write timeout (for the InfluxDB client), formatted as a string. + ## If not provided, will default to 5s. 0s means no timeout (not recommended). + timeout = "5s" + # username = "telegraf" + # password = "metricsmetricsmetricsmetrics" + # Set the user agent for HTTP POSTs (can be useful for log differentiation) + # user_agent = "telegraf" + # Set UDP payload size, defaults to InfluxDB UDP Client default (512 bytes) + # udp_payload = 512 + + +############################################################################### +# INPUTS # +############################################################################### +# Statsd Server +[[inputs.statsd]] + ## Protocol, must be "tcp", "udp4", "udp6" or "udp" (default=udp) + protocol = "udp" + + ## MaxTCPConnection - applicable when protocol is set to tcp (default=250) + max_tcp_connections = 250 + + ## Enable TCP keep alive probes (default=false) + tcp_keep_alive = false + + ## Specifies the keep-alive period for an active network connection. + ## Only applies to TCP sockets and will be ignored if tcp_keep_alive is false. + ## Defaults to the OS configuration. + # tcp_keep_alive_period = "2h" + + ## Address and port to host UDP listener on + service_address = ":8125" + + ## The following configuration options control when telegraf clears it's cache + ## of previous values. If set to false, then telegraf will only clear it's + ## cache when the daemon is restarted. + ## Reset gauges every interval (default=true) + delete_gauges = true + ## Reset counters every interval (default=true) + delete_counters = true + ## Reset sets every interval (default=true) + delete_sets = true + ## Reset timings & histograms every interval (default=true) + delete_timings = true + + ## Percentiles to calculate for timing & histogram stats + percentiles = [90] + + ## separator to use between elements of a statsd metric + metric_separator = "_" + + ## Parses tags in the datadog statsd format + ## http://docs.datadoghq.com/guides/dogstatsd/ + parse_data_dog_tags = false + + ## Statsd data translation templates, more info can be read here: + ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md#graphite + # templates = [ + # "cpu.* measurement*" + # ] + + ## Number of UDP messages allowed to queue up, once filled, + ## the statsd server will start dropping packets + allowed_pending_messages = 10000 + + ## Number of timing/histogram values to track per-measurement in the + ## calculation of percentiles. Raising this limit increases the accuracy + ## of percentiles but also increases the memory usage and cpu time. + percentile_limit = 1000 + + ## Maximum socket buffer size in bytes, once the buffer fills up, metrics + ## will start dropping. Defaults to the OS default. + # read_buffer_size = 65535 + +# Read metrics about cpu usage +[[inputs.cpu]] + ## Whether to report per-cpu stats or not + percpu = true + ## Whether to report total system cpu stats or not + totalcpu = true + ## Comment this line if you want the raw CPU time metrics + fielddrop = ["time_*"] + + +# Read metrics about disk usage by mount point +[[inputs.disk]] + ## By default, telegraf gather stats for all mountpoints. + ## Setting mountpoints will restrict the stats to the specified mountpoints. + # mount_points = ["/"] + + ## Ignore some mountpoints by filesystem type. For example (dev)tmpfs (usually + ## present on /run, /var/run, /dev/shm or /dev). + ignore_fs = ["tmpfs", "devtmpfs"] + + +# Read metrics about disk IO by device +[[inputs.diskio]] + ## By default, telegraf will gather stats for all devices including + ## disk partitions. + ## Setting devices will restrict the stats to the specified devices. + # devices = ["sda", "sdb"] + ## Uncomment the following line if you need disk serial numbers. + # skip_serial_number = false + + +# Get kernel statistics from /proc/stat +[[inputs.kernel]] + # no configuration + + +# Read metrics about memory usage +[[inputs.mem]] + # no configuration + + +# Get the number of processes and group them by status +[[inputs.processes]] + # no configuration + + +# Read metrics about swap memory usage +[[inputs.swap]] + # no configuration + + +# Read metrics about system load & uptime +[[inputs.system]] + # no configuration + +# Read metrics about network interface usage +[[inputs.net]] + # collect data only about specific interfaces + # interfaces = ["eth0"] + + +[[inputs.netstat]] + # no configuration + +[[inputs.interrupts]] + # no configuration + +[[inputs.linux_sysctl_fs]] + # no configuration diff --git a/kafka-docker b/kafka-docker new file mode 160000 index 0000000..a49ac63 --- /dev/null +++ b/kafka-docker @@ -0,0 +1 @@ +Subproject commit a49ac63983188c7eadebfb69c131ae74d401e586 diff --git a/logging/docker-compose.yml b/logging/docker-compose.yml new file mode 100644 index 0000000..66f7da0 --- /dev/null +++ b/logging/docker-compose.yml @@ -0,0 +1,43 @@ +version: '3.7' +services: + + mongodb: + restart: always + build: + context: ./mongodb/ + dockerfile: Dockerfile + container_name: devmongo + ports: + - "27017:27017" + volumes: + - ./mongodb/data:/data/db + - ./mongodb/init:/docker-entrypoint-initdb.d + command: --bind_ip_all + networks: + - logging + + fluentd: + image: fluent/fluentd:edge-debian + container_name: devfluentd + restart: always + user: root + command: > + /bin/sh -c " + apt-get update && + apt-get install -y build-essential ruby-dev && + gem install fluent-plugin-mongo --no-document && + apt-get remove -y build-essential ruby-dev && + apt-get autoremove -y && + exec fluentd -c /fluentd/etc/fluent.conf" + volumes: + - ./fluentd/conf:/fluentd/etc + - ../../bin/Debug/logs/archive/business:/fluentd/businesslogs + depends_on: + - mongodb + networks: + - logging + + +networks: + logging: + driver: bridge \ No newline at end of file diff --git a/logging/fluentd/conf/fluent.conf b/logging/fluentd/conf/fluent.conf new file mode 100644 index 0000000..8ea3cd8 --- /dev/null +++ b/logging/fluentd/conf/fluent.conf @@ -0,0 +1,23 @@ + + @type mongo + host mongodb + port 27017 + database LogDB + collection Log + + flush_interval 5s + + + + + + + @type tail + path /fluentd/businesslogs/*.json + pos_file /var/log/td-agent/serverlog.pos + + @type json + + tag mongo.server.log + + diff --git a/logging/mongodb/Dockerfile b/logging/mongodb/Dockerfile new file mode 100644 index 0000000..0afa253 --- /dev/null +++ b/logging/mongodb/Dockerfile @@ -0,0 +1,10 @@ +# Dockerfile + +# 공식 MongoDB 이미지 사용 +FROM mongo:latest + +# MongoDB 클라이언트 설치 +RUN apt-get install -y mongodb-org-shell && rm -rf /var/lib/apt/lists/* + +# 컨테이너 시작시 MongoDB 클라이언트 도구를 사용하여 스크립트 실행 +CMD mongosh localhost:27017/LogDB /docker-entrypoint-initdb.d/init-mongo.js \ No newline at end of file diff --git a/logging/mongodb/init/init-mongo.js b/logging/mongodb/init/init-mongo.js new file mode 100644 index 0000000..33ba4e7 --- /dev/null +++ b/logging/mongodb/init/init-mongo.js @@ -0,0 +1,2 @@ +db = db.getSiblingDB('LogDB'); +db.createCollection('Log'); diff --git a/logging/실행전주의사항.txt b/logging/실행전주의사항.txt new file mode 100644 index 0000000..1b81adb --- /dev/null +++ b/logging/실행전주의사항.txt @@ -0,0 +1,19 @@ +해당 도커는 Local, Dev 환경에서 사용하기 위한 설정 +Local, Dev 환경에서 MongoDB, FluentD가 필요할경우 설치 진행 + + + +Fluentd 가 로그파일을 MongoDB로 전송하기 위해 docker-compose.yml 의 Fluentd Volume 정보를 해당 서버 경로 에 맞게 수정해줘야 한다. + +docker-compose.yml 파일 실행 경로를 기준으로 로그파일 저장되어 있는 폴더를 상대 경로로 지정 + +예시 : + +volumes: + - ./fluentd/conf:/fluentd/etc + - ../../bin/Debug/logs/archive/business:/fluentd/businesslogs + +위 ./../bin/Debug/logs/archive/business: 라고 되어 있는 경로가 로그파일이 존재하는 경로 + + +다른내용은 바꾸지 않는다. diff --git a/opensearch/docker-compose.yml b/opensearch/docker-compose.yml new file mode 100644 index 0000000..c4f4a0b --- /dev/null +++ b/opensearch/docker-compose.yml @@ -0,0 +1,73 @@ +version: '3' +services: + opensearch-node1: + image: opensearchproject/opensearch:latest + container_name: opensearch-node1 + environment: + - cluster.name=opensearch-cluster + - node.name=opensearch-node1 + - discovery.seed_hosts=opensearch-node1,opensearch-node2 + - cluster.initial_cluster_manager_nodes=opensearch-node1,opensearch-node2 + - bootstrap.memory_lock=true # along with the memlock settings below, disables swapping + - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # minimum and maximum Java heap size, recommend setting both to 50% of system RAM + ulimits: + memlock: + soft: -1 + hard: -1 + nofile: + soft: 65536 # maximum number of open files for the OpenSearch user, set to at least 65536 on modern systems + hard: 65536 + volumes: + - opensearch-data1:/usr/share/opensearch/data + ports: + - 9200:9200 + - 9600:9600 # required for Performance Analyzer + networks: + - opensearch-net + opensearch-node2: + image: opensearchproject/opensearch:latest + container_name: opensearch-node2 + environment: + - cluster.name=opensearch-cluster + - node.name=opensearch-node2 + - discovery.seed_hosts=opensearch-node1,opensearch-node2 + - cluster.initial_cluster_manager_nodes=opensearch-node1,opensearch-node2 + - bootstrap.memory_lock=true + - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" + ulimits: + memlock: + soft: -1 + hard: -1 + nofile: + soft: 65536 + hard: 65536 + volumes: + - opensearch-data2:/usr/share/opensearch/data + networks: + - opensearch-net + opensearch-dashboards: + image: opensearchproject/opensearch-dashboards:latest + container_name: opensearch-dashboards + ports: + - 5601:5601 + expose: + - "5601" + environment: + OPENSEARCH_HOSTS: '["https://opensearch-node1:9200","https://opensearch-node2:9200"]' + networks: + - opensearch-net + filebeat: + image: docker.elastic.co/beats/filebeat:7.16.3 + user: root + volumes: + - ./filebeat.yml:/usr/share/filebeat/filebeat.yml:ro + - /var/lib/docker/containers:/var/lib/docker/containers:ro + networks: + - elk + +volumes: + opensearch-data1: + opensearch-data2: + +networks: + opensearch-net: diff --git a/opensearch/single-node/docker-compose.yml b/opensearch/single-node/docker-compose.yml new file mode 100644 index 0000000..5a3481f --- /dev/null +++ b/opensearch/single-node/docker-compose.yml @@ -0,0 +1,43 @@ +version: '3' +services: + opensearch-node1: + image: opensearchproject/opensearch:latest + container_name: opensearch-node1 + environment: + - cluster.name=opensearch-cluster + - node.name=opensearch-node1 + - discovery.seed_hosts=opensearch-node1 + - discovery.type=single-node + - bootstrap.memory_lock=true # along with the memlock settings below, disables swapping + - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # minimum and maximum Java heap size, recommend setting both to 50% of system RAM + ulimits: + memlock: + soft: -1 + hard: -1 + nofile: + soft: 65536 # maximum number of open files for the OpenSearch user, set to at least 65536 on modern systems + hard: 65536 + volumes: + - opensearch-data1:/usr/share/opensearch/data + ports: + - 9200:9200 + - 9600:9600 # required for Performance Analyzer + networks: + - opensearch-net + opensearch-dashboards: + image: opensearchproject/opensearch-dashboards:latest + container_name: opensearch-dashboards + ports: + - 5601:5601 + expose: + - "5601" + environment: + OPENSEARCH_HOSTS: '["https://opensearch-node1:9200"]' + networks: + - opensearch-net + +volumes: + opensearch-data1: + +networks: + opensearch-net: diff --git a/rabbitmq/docker-compose.yml b/rabbitmq/docker-compose.yml new file mode 100644 index 0000000..cb925aa --- /dev/null +++ b/rabbitmq/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3' +services: + rabbitmq: + image: 'rabbitmq:3-management-alpine' + container_name: rabbitmq-stream + ports: + - "5672:5672" + - "15672:15672" + environment: + RABBITMQ_ERLANG_COOKIE: "RabbitMQ-My-Cookies" + RABBITMQ_DEFAULT_USER: "admin" + RABBITMQ_DEFAULT_PASS: "admin" diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..b4cb389 --- /dev/null +++ b/readme.txt @@ -0,0 +1,49 @@ +docker-compose up -d + + +================================ +이하 레거시 +================================= +# consul ui +http://127.0.0.1:8500/ + +# dynamodb +http://localhost:8000 + +# redis +127.0.0.1:6379 + +# kafka ui +http://127.0.0.1:9000/ + +# kafka BootstrapServer +localhost:9092 + +# grafana +http://127.0.0.1:3000/ + + + +############################## +Yikes! KeeperErrorCode = Unimplemented for /kafka-manager/mutex Try again. +kafka-manager 에러 발생 시 + + +zookeeper 에 접속한 뒤 ./bin/zkCli.sh 로 주키퍼 클라이언트 실행 후 아래와 같이 /kafka-manager 경로에 3개 폴더 생성 + +# docker exec -it my-zookeeper /bin/bash +root@ec5ea8a1e52b:/opt/zookeeper-3.4.13# ./bin/zkCli.sh +... +[zk: localhost:2181(CONNECTED) 0] ls /kafka-manager +[configs, clusters, deleteClusters] +[zk: localhost:2181(CONNECTED) 1] create /kafka-manager/mutex "" +Created /kafka-manager/mutex +[zk: localhost:2181(CONNECTED) 2] create /kafka-manager/mutex/locks "" +Created /kafka-manager/mutex/locks +[zk: localhost:2181(CONNECTED) 3] create /kafka-manager/mutex/leases "" +Created /kafka-manager/mutex/leases + + + +############################## + diff --git a/redis-master-slave.yml b/redis-master-slave.yml new file mode 100644 index 0000000..cc1d28a --- /dev/null +++ b/redis-master-slave.yml @@ -0,0 +1,22 @@ +version: '3.7' +services: + redis-master: + image: redis:latest + hostname: redis-master + volumes: + - redis_master:/data + ports: + - '6379:6379' + + redis-slave: + image: redis:latest + hostname: redis-slave + volumes: + - redis_slave:/data + ports: + - '6479:6479' + command: redis-server --slaveof redis-master 6379 + +volumes: + redis_master: + redis_slave: \ No newline at end of file diff --git a/redis_master/redis.conf b/redis_master/redis.conf new file mode 100644 index 0000000..ebe2d82 --- /dev/null +++ b/redis_master/redis.conf @@ -0,0 +1,2276 @@ +# Redis configuration file example. +# +# Note that in order to read the configuration file, Redis must be +# started with the file path as first argument: +# +# ./redis-server /path/to/redis.conf + +# Note on units: when memory size is needed, it is possible to specify +# it in the usual form of 1k 5GB 4M and so forth: +# +# 1k => 1000 bytes +# 1kb => 1024 bytes +# 1m => 1000000 bytes +# 1mb => 1024*1024 bytes +# 1g => 1000000000 bytes +# 1gb => 1024*1024*1024 bytes +# +# units are case insensitive so 1GB 1Gb 1gB are all the same. + +################################## INCLUDES ################################### + +# Include one or more other config files here. This is useful if you +# have a standard template that goes to all Redis servers but also need +# to customize a few per-server settings. Include files can include +# other files, so use this wisely. +# +# Note that option "include" won't be rewritten by command "CONFIG REWRITE" +# from admin or Redis Sentinel. Since Redis always uses the last processed +# line as value of a configuration directive, you'd better put includes +# at the beginning of this file to avoid overwriting config change at runtime. +# +# If instead you are interested in using includes to override configuration +# options, it is better to use include as the last line. +# +# Included paths may contain wildcards. All files matching the wildcards will +# be included in alphabetical order. +# Note that if an include path contains a wildcards but no files match it when +# the server is started, the include statement will be ignored and no error will +# be emitted. It is safe, therefore, to include wildcard files from empty +# directories. +# +# include /path/to/local.conf +# include /path/to/other.conf +# include /path/to/fragments/*.conf +# + +################################## MODULES ##################################### + +# Load modules at startup. If the server is not able to load modules +# it will abort. It is possible to use multiple loadmodule directives. +# +# loadmodule /path/to/my_module.so +# loadmodule /path/to/other_module.so + +################################## NETWORK ##################################### + +# By default, if no "bind" configuration directive is specified, Redis listens +# for connections from all available network interfaces on the host machine. +# It is possible to listen to just one or multiple selected interfaces using +# the "bind" configuration directive, followed by one or more IP addresses. +# Each address can be prefixed by "-", which means that redis will not fail to +# start if the address is not available. Being not available only refers to +# addresses that does not correspond to any network interface. Addresses that +# are already in use will always fail, and unsupported protocols will always BE +# silently skipped. +# +# Examples: +# +# bind 192.168.1.100 10.0.0.1 # listens on two specific IPv4 addresses +# bind 127.0.0.1 ::1 # listens on loopback IPv4 and IPv6 +# bind * -::* # like the default, all available interfaces +# +# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the +# internet, binding to all the interfaces is dangerous and will expose the +# instance to everybody on the internet. So by default we uncomment the +# following bind directive, that will force Redis to listen only on the +# IPv4 and IPv6 (if available) loopback interface addresses (this means Redis +# will only be able to accept client connections from the same host that it is +# running on). +# +# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES +# COMMENT OUT THE FOLLOWING LINE. +# +# You will also need to set a password unless you explicitly disable protected +# mode. +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +bind * -::* + +# By default, outgoing connections (from replica to master, from Sentinel to +# instances, cluster bus, etc.) are not bound to a specific local address. In +# most cases, this means the operating system will handle that based on routing +# and the interface through which the connection goes out. +# +# Using bind-source-addr it is possible to configure a specific address to bind +# to, which may also affect how the connection gets routed. +# +# Example: +# +# bind-source-addr 10.0.0.1 + +# Protected mode is a layer of security protection, in order to avoid that +# Redis instances left open on the internet are accessed and exploited. +# +# When protected mode is on and the default user has no password, the server +# only accepts local connections from the IPv4 address (127.0.0.1), IPv6 address +# (::1) or Unix domain sockets. +# +# By default protected mode is enabled. You should disable it only if +# you are sure you want clients from other hosts to connect to Redis +# even if no authentication is configured. +protected-mode yes + +# Redis uses default hardened security configuration directives to reduce the +# attack surface on innocent users. Therefore, several sensitive configuration +# directives are immutable, and some potentially-dangerous commands are blocked. +# +# Configuration directives that control files that Redis writes to (e.g., 'dir' +# and 'dbfilename') and that aren't usually modified during runtime +# are protected by making them immutable. +# +# Commands that can increase the attack surface of Redis and that aren't usually +# called by users are blocked by default. +# +# These can be exposed to either all connections or just local ones by setting +# each of the configs listed below to either of these values: +# +# no - Block for any connection (remain immutable) +# yes - Allow for any connection (no protection) +# local - Allow only for local connections. Ones originating from the +# IPv4 address (127.0.0.1), IPv6 address (::1) or Unix domain sockets. +# +# enable-protected-configs no +enable-debug-command yes +# enable-module-command no + +# Accept connections on the specified port, default is 6379 (IANA #815344). +# If port 0 is specified Redis will not listen on a TCP socket. +port 6379 + +# TCP listen() backlog. +# +# In high requests-per-second environments you need a high backlog in order +# to avoid slow clients connection issues. Note that the Linux kernel +# will silently truncate it to the value of /proc/sys/net/core/somaxconn so +# make sure to raise both the value of somaxconn and tcp_max_syn_backlog +# in order to get the desired effect. +tcp-backlog 511 + +# Unix socket. +# +# Specify the path for the Unix socket that will be used to listen for +# incoming connections. There is no default, so Redis will not listen +# on a unix socket when not specified. +# +# unixsocket /run/redis.sock +# unixsocketperm 700 + +# Close the connection after a client is idle for N seconds (0 to disable) +timeout 0 + +# TCP keepalive. +# +# If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence +# of communication. This is useful for two reasons: +# +# 1) Detect dead peers. +# 2) Force network equipment in the middle to consider the connection to be +# alive. +# +# On Linux, the specified value (in seconds) is the period used to send ACKs. +# Note that to close the connection the double of the time is needed. +# On other kernels the period depends on the kernel configuration. +# +# A reasonable value for this option is 300 seconds, which is the new +# Redis default starting with Redis 3.2.1. +tcp-keepalive 300 + +# Apply OS-specific mechanism to mark the listening socket with the specified +# ID, to support advanced routing and filtering capabilities. +# +# On Linux, the ID represents a connection mark. +# On FreeBSD, the ID represents a socket cookie ID. +# On OpenBSD, the ID represents a route table ID. +# +# The default value is 0, which implies no marking is required. +# socket-mark-id 0 + +################################# TLS/SSL ##################################### + +# By default, TLS/SSL is disabled. To enable it, the "tls-port" configuration +# directive can be used to define TLS-listening ports. To enable TLS on the +# default port, use: +# +# port 0 +# tls-port 6379 + +# Configure a X.509 certificate and private key to use for authenticating the +# server to connected clients, masters or cluster peers. These files should be +# PEM formatted. +# +# tls-cert-file redis.crt +# tls-key-file redis.key +# +# If the key file is encrypted using a passphrase, it can be included here +# as well. +# +# tls-key-file-pass secret + +# Normally Redis uses the same certificate for both server functions (accepting +# connections) and client functions (replicating from a master, establishing +# cluster bus connections, etc.). +# +# Sometimes certificates are issued with attributes that designate them as +# client-only or server-only certificates. In that case it may be desired to use +# different certificates for incoming (server) and outgoing (client) +# connections. To do that, use the following directives: +# +# tls-client-cert-file client.crt +# tls-client-key-file client.key +# +# If the key file is encrypted using a passphrase, it can be included here +# as well. +# +# tls-client-key-file-pass secret + +# Configure a DH parameters file to enable Diffie-Hellman (DH) key exchange, +# required by older versions of OpenSSL (<3.0). Newer versions do not require +# this configuration and recommend against it. +# +# tls-dh-params-file redis.dh + +# Configure a CA certificate(s) bundle or directory to authenticate TLS/SSL +# clients and peers. Redis requires an explicit configuration of at least one +# of these, and will not implicitly use the system wide configuration. +# +# tls-ca-cert-file ca.crt +# tls-ca-cert-dir /etc/ssl/certs + +# By default, clients (including replica servers) on a TLS port are required +# to authenticate using valid client side certificates. +# +# If "no" is specified, client certificates are not required and not accepted. +# If "optional" is specified, client certificates are accepted and must be +# valid if provided, but are not required. +# +# tls-auth-clients no +# tls-auth-clients optional + +# By default, a Redis replica does not attempt to establish a TLS connection +# with its master. +# +# Use the following directive to enable TLS on replication links. +# +# tls-replication yes + +# By default, the Redis Cluster bus uses a plain TCP connection. To enable +# TLS for the bus protocol, use the following directive: +# +# tls-cluster yes + +# By default, only TLSv1.2 and TLSv1.3 are enabled and it is highly recommended +# that older formally deprecated versions are kept disabled to reduce the attack surface. +# You can explicitly specify TLS versions to support. +# Allowed values are case insensitive and include "TLSv1", "TLSv1.1", "TLSv1.2", +# "TLSv1.3" (OpenSSL >= 1.1.1) or any combination. +# To enable only TLSv1.2 and TLSv1.3, use: +# +# tls-protocols "TLSv1.2 TLSv1.3" + +# Configure allowed ciphers. See the ciphers(1ssl) manpage for more information +# about the syntax of this string. +# +# Note: this configuration applies only to <= TLSv1.2. +# +# tls-ciphers DEFAULT:!MEDIUM + +# Configure allowed TLSv1.3 ciphersuites. See the ciphers(1ssl) manpage for more +# information about the syntax of this string, and specifically for TLSv1.3 +# ciphersuites. +# +# tls-ciphersuites TLS_CHACHA20_POLY1305_SHA256 + +# When choosing a cipher, use the server's preference instead of the client +# preference. By default, the server follows the client's preference. +# +# tls-prefer-server-ciphers yes + +# By default, TLS session caching is enabled to allow faster and less expensive +# reconnections by clients that support it. Use the following directive to disable +# caching. +# +# tls-session-caching no + +# Change the default number of TLS sessions cached. A zero value sets the cache +# to unlimited size. The default size is 20480. +# +# tls-session-cache-size 5000 + +# Change the default timeout of cached TLS sessions. The default timeout is 300 +# seconds. +# +# tls-session-cache-timeout 60 + +################################# GENERAL ##################################### + +# By default Redis does not run as a daemon. Use 'yes' if you need it. +# Note that Redis will write a pid file in /var/run/redis.pid when daemonized. +# When Redis is supervised by upstart or systemd, this parameter has no impact. +daemonize no + +# If you run Redis from upstart or systemd, Redis can interact with your +# supervision tree. Options: +# supervised no - no supervision interaction +# supervised upstart - signal upstart by putting Redis into SIGSTOP mode +# requires "expect stop" in your upstart job config +# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET +# on startup, and updating Redis status on a regular +# basis. +# supervised auto - detect upstart or systemd method based on +# UPSTART_JOB or NOTIFY_SOCKET environment variables +# Note: these supervision methods only signal "process is ready." +# They do not enable continuous pings back to your supervisor. +# +# The default is "no". To run under upstart/systemd, you can simply uncomment +# the line below: +# +# supervised auto + +# If a pid file is specified, Redis writes it where specified at startup +# and removes it at exit. +# +# When the server runs non daemonized, no pid file is created if none is +# specified in the configuration. When the server is daemonized, the pid file +# is used even if not specified, defaulting to "/var/run/redis.pid". +# +# Creating a pid file is best effort: if Redis is not able to create it +# nothing bad happens, the server will start and run normally. +# +# Note that on modern Linux systems "/run/redis.pid" is more conforming +# and should be used instead. +pidfile /var/run/redis_6379.pid + +# Specify the server verbosity level. +# This can be one of: +# debug (a lot of information, useful for development/testing) +# verbose (many rarely useful info, but not a mess like the debug level) +# notice (moderately verbose, what you want in production probably) +# warning (only very important / critical messages are logged) +loglevel notice + +# Specify the log file name. Also the empty string can be used to force +# Redis to log on the standard output. Note that if you use standard +# output for logging but daemonize, logs will be sent to /dev/null +logfile "/home/redis_master/redis.log" + +# To enable logging to the system logger, just set 'syslog-enabled' to yes, +# and optionally update the other syslog parameters to suit your needs. +# syslog-enabled no + +# Specify the syslog identity. +# syslog-ident redis + +# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7. +# syslog-facility local0 + +# To disable the built in crash log, which will possibly produce cleaner core +# dumps when they are needed, uncomment the following: +# +# crash-log-enabled no + +# To disable the fast memory check that's run as part of the crash log, which +# will possibly let redis terminate sooner, uncomment the following: +# +# crash-memcheck-enabled no + +# Set the number of databases. The default database is DB 0, you can select +# a different one on a per-connection basis using SELECT where +# dbid is a number between 0 and 'databases'-1 +databases 16 + +# By default Redis shows an ASCII art logo only when started to log to the +# standard output and if the standard output is a TTY and syslog logging is +# disabled. Basically this means that normally a logo is displayed only in +# interactive sessions. +# +# However it is possible to force the pre-4.0 behavior and always show a +# ASCII art logo in startup logs by setting the following option to yes. +always-show-logo no + +# By default, Redis modifies the process title (as seen in 'top' and 'ps') to +# provide some runtime information. It is possible to disable this and leave +# the process name as executed by setting the following to no. +set-proc-title yes + +# When changing the process title, Redis uses the following template to construct +# the modified title. +# +# Template variables are specified in curly brackets. The following variables are +# supported: +# +# {title} Name of process as executed if parent, or type of child process. +# {listen-addr} Bind address or '*' followed by TCP or TLS port listening on, or +# Unix socket if only that's available. +# {server-mode} Special mode, i.e. "[sentinel]" or "[cluster]". +# {port} TCP port listening on, or 0. +# {tls-port} TLS port listening on, or 0. +# {unixsocket} Unix domain socket listening on, or "". +# {config-file} Name of configuration file used. +# +proc-title-template "{title} {listen-addr} {server-mode}" + +################################ SNAPSHOTTING ################################ + +# Save the DB to disk. +# +# save [ ...] +# +# Redis will save the DB if the given number of seconds elapsed and it +# surpassed the given number of write operations against the DB. +# +# Snapshotting can be completely disabled with a single empty string argument +# as in following example: +# +# save "" +# +# Unless specified otherwise, by default Redis will save the DB: +# * After 3600 seconds (an hour) if at least 1 change was performed +# * After 300 seconds (5 minutes) if at least 100 changes were performed +# * After 60 seconds if at least 10000 changes were performed +# +# You can set these explicitly by uncommenting the following line. +# +# save 3600 1 300 100 60 10000 + +# By default Redis will stop accepting writes if RDB snapshots are enabled +# (at least one save point) and the latest background save failed. +# This will make the user aware (in a hard way) that data is not persisting +# on disk properly, otherwise chances are that no one will notice and some +# disaster will happen. +# +# If the background saving process will start working again Redis will +# automatically allow writes again. +# +# However if you have setup your proper monitoring of the Redis server +# and persistence, you may want to disable this feature so that Redis will +# continue to work as usual even if there are problems with disk, +# permissions, and so forth. +stop-writes-on-bgsave-error no + +# Compress string objects using LZF when dump .rdb databases? +# By default compression is enabled as it's almost always a win. +# If you want to save some CPU in the saving child set it to 'no' but +# the dataset will likely be bigger if you have compressible values or keys. +rdbcompression yes + +# Since version 5 of RDB a CRC64 checksum is placed at the end of the file. +# This makes the format more resistant to corruption but there is a performance +# hit to pay (around 10%) when saving and loading RDB files, so you can disable it +# for maximum performances. +# +# RDB files created with checksum disabled have a checksum of zero that will +# tell the loading code to skip the check. +rdbchecksum yes + +# Enables or disables full sanitization checks for ziplist and listpack etc when +# loading an RDB or RESTORE payload. This reduces the chances of a assertion or +# crash later on while processing commands. +# Options: +# no - Never perform full sanitization +# yes - Always perform full sanitization +# clients - Perform full sanitization only for user connections. +# Excludes: RDB files, RESTORE commands received from the master +# connection, and client connections which have the +# skip-sanitize-payload ACL flag. +# The default should be 'clients' but since it currently affects cluster +# resharding via MIGRATE, it is temporarily set to 'no' by default. +# +# sanitize-dump-payload no + +# The filename where to dump the DB +dbfilename dump.rdb + +# Remove RDB files used by replication in instances without persistence +# enabled. By default this option is disabled, however there are environments +# where for regulations or other security concerns, RDB files persisted on +# disk by masters in order to feed replicas, or stored on disk by replicas +# in order to load them for the initial synchronization, should be deleted +# ASAP. Note that this option ONLY WORKS in instances that have both AOF +# and RDB persistence disabled, otherwise is completely ignored. +# +# An alternative (and sometimes better) way to obtain the same effect is +# to use diskless replication on both master and replicas instances. However +# in the case of replicas, diskless is not always an option. +rdb-del-sync-files no + +# The working directory. +# +# The DB will be written inside this directory, with the filename specified +# above using the 'dbfilename' configuration directive. +# +# The Append Only File will also be created inside this directory. +# +# Note that you must specify a directory here, not a file name. +dir ./ + +################################# REPLICATION ################################# + +# Master-Replica replication. Use replicaof to make a Redis instance a copy of +# another Redis server. A few things to understand ASAP about Redis replication. +# +# +------------------+ +---------------+ +# | Master | ---> | Replica | +# | (receive writes) | | (exact copy) | +# +------------------+ +---------------+ +# +# 1) Redis replication is asynchronous, but you can configure a master to +# stop accepting writes if it appears to be not connected with at least +# a given number of replicas. +# 2) Redis replicas are able to perform a partial resynchronization with the +# master if the replication link is lost for a relatively small amount of +# time. You may want to configure the replication backlog size (see the next +# sections of this file) with a sensible value depending on your needs. +# 3) Replication is automatic and does not need user intervention. After a +# network partition replicas automatically try to reconnect to masters +# and resynchronize with them. +# +# replicaof + +# If the master is password protected (using the "requirepass" configuration +# directive below) it is possible to tell the replica to authenticate before +# starting the replication synchronization process, otherwise the master will +# refuse the replica request. +# +masterauth KT-i5#i%-%LxKfZ5YJj6 +# +# However this is not enough if you are using Redis ACLs (for Redis version +# 6 or greater), and the default user is not capable of running the PSYNC +# command and/or other commands needed for replication. In this case it's +# better to configure a special user to use with replication, and specify the +# masteruser configuration as such: +# +# masteruser +# +# When masteruser is specified, the replica will authenticate against its +# master using the new AUTH form: AUTH . + +# When a replica loses its connection with the master, or when the replication +# is still in progress, the replica can act in two different ways: +# +# 1) if replica-serve-stale-data is set to 'yes' (the default) the replica will +# still reply to client requests, possibly with out of date data, or the +# data set may just be empty if this is the first synchronization. +# +# 2) If replica-serve-stale-data is set to 'no' the replica will reply with error +# "MASTERDOWN Link with MASTER is down and replica-serve-stale-data is set to 'no'" +# to all data access commands, excluding commands such as: +# INFO, REPLICAOF, AUTH, SHUTDOWN, REPLCONF, ROLE, CONFIG, SUBSCRIBE, +# UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB, COMMAND, POST, +# HOST and LATENCY. +# +replica-serve-stale-data yes + +# You can configure a replica instance to accept writes or not. Writing against +# a replica instance may be useful to store some ephemeral data (because data +# written on a replica will be easily deleted after resync with the master) but +# may also cause problems if clients are writing to it because of a +# misconfiguration. +# +# Since Redis 2.6 by default replicas are read-only. +# +# Note: read only replicas are not designed to be exposed to untrusted clients +# on the internet. It's just a protection layer against misuse of the instance. +# Still a read only replica exports by default all the administrative commands +# such as CONFIG, DEBUG, and so forth. To a limited extent you can improve +# security of read only replicas using 'rename-command' to shadow all the +# administrative / dangerous commands. +replica-read-only yes + +# Replication SYNC strategy: disk or socket. +# +# New replicas and reconnecting replicas that are not able to continue the +# replication process just receiving differences, need to do what is called a +# "full synchronization". An RDB file is transmitted from the master to the +# replicas. +# +# The transmission can happen in two different ways: +# +# 1) Disk-backed: The Redis master creates a new process that writes the RDB +# file on disk. Later the file is transferred by the parent +# process to the replicas incrementally. +# 2) Diskless: The Redis master creates a new process that directly writes the +# RDB file to replica sockets, without touching the disk at all. +# +# With disk-backed replication, while the RDB file is generated, more replicas +# can be queued and served with the RDB file as soon as the current child +# producing the RDB file finishes its work. With diskless replication instead +# once the transfer starts, new replicas arriving will be queued and a new +# transfer will start when the current one terminates. +# +# When diskless replication is used, the master waits a configurable amount of +# time (in seconds) before starting the transfer in the hope that multiple +# replicas will arrive and the transfer can be parallelized. +# +# With slow disks and fast (large bandwidth) networks, diskless replication +# works better. +repl-diskless-sync yes + +# When diskless replication is enabled, it is possible to configure the delay +# the server waits in order to spawn the child that transfers the RDB via socket +# to the replicas. +# +# This is important since once the transfer starts, it is not possible to serve +# new replicas arriving, that will be queued for the next RDB transfer, so the +# server waits a delay in order to let more replicas arrive. +# +# The delay is specified in seconds, and by default is 5 seconds. To disable +# it entirely just set it to 0 seconds and the transfer will start ASAP. +repl-diskless-sync-delay 5 + +# When diskless replication is enabled with a delay, it is possible to let +# the replication start before the maximum delay is reached if the maximum +# number of replicas expected have connected. Default of 0 means that the +# maximum is not defined and Redis will wait the full delay. +repl-diskless-sync-max-replicas 0 + +# ----------------------------------------------------------------------------- +# WARNING: RDB diskless load is experimental. Since in this setup the replica +# does not immediately store an RDB on disk, it may cause data loss during +# failovers. RDB diskless load + Redis modules not handling I/O reads may also +# cause Redis to abort in case of I/O errors during the initial synchronization +# stage with the master. Use only if you know what you are doing. +# ----------------------------------------------------------------------------- +# +# Replica can load the RDB it reads from the replication link directly from the +# socket, or store the RDB to a file and read that file after it was completely +# received from the master. +# +# In many cases the disk is slower than the network, and storing and loading +# the RDB file may increase replication time (and even increase the master's +# Copy on Write memory and replica buffers). +# However, parsing the RDB file directly from the socket may mean that we have +# to flush the contents of the current database before the full rdb was +# received. For this reason we have the following options: +# +# "disabled" - Don't use diskless load (store the rdb file to the disk first) +# "on-empty-db" - Use diskless load only when it is completely safe. +# "swapdb" - Keep current db contents in RAM while parsing the data directly +# from the socket. Replicas in this mode can keep serving current +# data set while replication is in progress, except for cases where +# they can't recognize master as having a data set from same +# replication history. +# Note that this requires sufficient memory, if you don't have it, +# you risk an OOM kill. +repl-diskless-load disabled + +# Master send PINGs to its replicas in a predefined interval. It's possible to +# change this interval with the repl_ping_replica_period option. The default +# value is 10 seconds. +# +# repl-ping-replica-period 10 + +# The following option sets the replication timeout for: +# +# 1) Bulk transfer I/O during SYNC, from the point of view of replica. +# 2) Master timeout from the point of view of replicas (data, pings). +# 3) Replica timeout from the point of view of masters (REPLCONF ACK pings). +# +# It is important to make sure that this value is greater than the value +# specified for repl-ping-replica-period otherwise a timeout will be detected +# every time there is low traffic between the master and the replica. The default +# value is 60 seconds. +# +# repl-timeout 60 + +# Disable TCP_NODELAY on the replica socket after SYNC? +# +# If you select "yes" Redis will use a smaller number of TCP packets and +# less bandwidth to send data to replicas. But this can add a delay for +# the data to appear on the replica side, up to 40 milliseconds with +# Linux kernels using a default configuration. +# +# If you select "no" the delay for data to appear on the replica side will +# be reduced but more bandwidth will be used for replication. +# +# By default we optimize for low latency, but in very high traffic conditions +# or when the master and replicas are many hops away, turning this to "yes" may +# be a good idea. +repl-disable-tcp-nodelay no + +# Set the replication backlog size. The backlog is a buffer that accumulates +# replica data when replicas are disconnected for some time, so that when a +# replica wants to reconnect again, often a full resync is not needed, but a +# partial resync is enough, just passing the portion of data the replica +# missed while disconnected. +# +# The bigger the replication backlog, the longer the replica can endure the +# disconnect and later be able to perform a partial resynchronization. +# +# The backlog is only allocated if there is at least one replica connected. +# +# repl-backlog-size 1mb + +# After a master has no connected replicas for some time, the backlog will be +# freed. The following option configures the amount of seconds that need to +# elapse, starting from the time the last replica disconnected, for the backlog +# buffer to be freed. +# +# Note that replicas never free the backlog for timeout, since they may be +# promoted to masters later, and should be able to correctly "partially +# resynchronize" with other replicas: hence they should always accumulate backlog. +# +# A value of 0 means to never release the backlog. +# +# repl-backlog-ttl 3600 + +# The replica priority is an integer number published by Redis in the INFO +# output. It is used by Redis Sentinel in order to select a replica to promote +# into a master if the master is no longer working correctly. +# +# A replica with a low priority number is considered better for promotion, so +# for instance if there are three replicas with priority 10, 100, 25 Sentinel +# will pick the one with priority 10, that is the lowest. +# +# However a special priority of 0 marks the replica as not able to perform the +# role of master, so a replica with priority of 0 will never be selected by +# Redis Sentinel for promotion. +# +# By default the priority is 100. +replica-priority 100 + +# The propagation error behavior controls how Redis will behave when it is +# unable to handle a command being processed in the replication stream from a master +# or processed while reading from an AOF file. Errors that occur during propagation +# are unexpected, and can cause data inconsistency. However, there are edge cases +# in earlier versions of Redis where it was possible for the server to replicate or persist +# commands that would fail on future versions. For this reason the default behavior +# is to ignore such errors and continue processing commands. +# +# If an application wants to ensure there is no data divergence, this configuration +# should be set to 'panic' instead. The value can also be set to 'panic-on-replicas' +# to only panic when a replica encounters an error on the replication stream. One of +# these two panic values will become the default value in the future once there are +# sufficient safety mechanisms in place to prevent false positive crashes. +# +# propagation-error-behavior ignore + +# Replica ignore disk write errors controls the behavior of a replica when it is +# unable to persist a write command received from its master to disk. By default, +# this configuration is set to 'no' and will crash the replica in this condition. +# It is not recommended to change this default, however in order to be compatible +# with older versions of Redis this config can be toggled to 'yes' which will just +# log a warning and execute the write command it got from the master. +# +# replica-ignore-disk-write-errors no + +# ----------------------------------------------------------------------------- +# By default, Redis Sentinel includes all replicas in its reports. A replica +# can be excluded from Redis Sentinel's announcements. An unannounced replica +# will be ignored by the 'sentinel replicas ' command and won't be +# exposed to Redis Sentinel's clients. +# +# This option does not change the behavior of replica-priority. Even with +# replica-announced set to 'no', the replica can be promoted to master. To +# prevent this behavior, set replica-priority to 0. +# +# replica-announced yes + +# It is possible for a master to stop accepting writes if there are less than +# N replicas connected, having a lag less or equal than M seconds. +# +# The N replicas need to be in "online" state. +# +# The lag in seconds, that must be <= the specified value, is calculated from +# the last ping received from the replica, that is usually sent every second. +# +# This option does not GUARANTEE that N replicas will accept the write, but +# will limit the window of exposure for lost writes in case not enough replicas +# are available, to the specified number of seconds. +# +# For example to require at least 3 replicas with a lag <= 10 seconds use: +# +# min-replicas-to-write 3 +# min-replicas-max-lag 10 +# +# Setting one or the other to 0 disables the feature. +# +# By default min-replicas-to-write is set to 0 (feature disabled) and +# min-replicas-max-lag is set to 10. + +# A Redis master is able to list the address and port of the attached +# replicas in different ways. For example the "INFO replication" section +# offers this information, which is used, among other tools, by +# Redis Sentinel in order to discover replica instances. +# Another place where this info is available is in the output of the +# "ROLE" command of a master. +# +# The listed IP address and port normally reported by a replica is +# obtained in the following way: +# +# IP: The address is auto detected by checking the peer address +# of the socket used by the replica to connect with the master. +# +# Port: The port is communicated by the replica during the replication +# handshake, and is normally the port that the replica is using to +# listen for connections. +# +# However when port forwarding or Network Address Translation (NAT) is +# used, the replica may actually be reachable via different IP and port +# pairs. The following two options can be used by a replica in order to +# report to its master a specific set of IP and port, so that both INFO +# and ROLE will report those values. +# +# There is no need to use both the options if you need to override just +# the port or the IP address. +# +# replica-announce-ip 5.5.5.5 +# replica-announce-port 1234 + +############################### KEYS TRACKING ################################# + +# Redis implements server assisted support for client side caching of values. +# This is implemented using an invalidation table that remembers, using +# a radix key indexed by key name, what clients have which keys. In turn +# this is used in order to send invalidation messages to clients. Please +# check this page to understand more about the feature: +# +# https://redis.io/topics/client-side-caching +# +# When tracking is enabled for a client, all the read only queries are assumed +# to be cached: this will force Redis to store information in the invalidation +# table. When keys are modified, such information is flushed away, and +# invalidation messages are sent to the clients. However if the workload is +# heavily dominated by reads, Redis could use more and more memory in order +# to track the keys fetched by many clients. +# +# For this reason it is possible to configure a maximum fill value for the +# invalidation table. By default it is set to 1M of keys, and once this limit +# is reached, Redis will start to evict keys in the invalidation table +# even if they were not modified, just to reclaim memory: this will in turn +# force the clients to invalidate the cached values. Basically the table +# maximum size is a trade off between the memory you want to spend server +# side to track information about who cached what, and the ability of clients +# to retain cached objects in memory. +# +# If you set the value to 0, it means there are no limits, and Redis will +# retain as many keys as needed in the invalidation table. +# In the "stats" INFO section, you can find information about the number of +# keys in the invalidation table at every given moment. +# +# Note: when key tracking is used in broadcasting mode, no memory is used +# in the server side so this setting is useless. +# +# tracking-table-max-keys 1000000 + +################################## SECURITY ################################### + +# Warning: since Redis is pretty fast, an outside user can try up to +# 1 million passwords per second against a modern box. This means that you +# should use very strong passwords, otherwise they will be very easy to break. +# Note that because the password is really a shared secret between the client +# and the server, and should not be memorized by any human, the password +# can be easily a long string from /dev/urandom or whatever, so by using a +# long and unguessable password no brute force attack will be possible. + +# Redis ACL users are defined in the following format: +# +# user ... acl rules ... +# +# For example: +# +# user worker +@list +@connection ~jobs:* on >ffa9203c493aa99 +# +# The special username "default" is used for new connections. If this user +# has the "nopass" rule, then new connections will be immediately authenticated +# as the "default" user without the need of any password provided via the +# AUTH command. Otherwise if the "default" user is not flagged with "nopass" +# the connections will start in not authenticated state, and will require +# AUTH (or the HELLO command AUTH option) in order to be authenticated and +# start to work. +# +# The ACL rules that describe what a user can do are the following: +# +# on Enable the user: it is possible to authenticate as this user. +# off Disable the user: it's no longer possible to authenticate +# with this user, however the already authenticated connections +# will still work. +# skip-sanitize-payload RESTORE dump-payload sanitization is skipped. +# sanitize-payload RESTORE dump-payload is sanitized (default). +# + Allow the execution of that command. +# May be used with `|` for allowing subcommands (e.g "+config|get") +# - Disallow the execution of that command. +# May be used with `|` for blocking subcommands (e.g "-config|set") +# +@ Allow the execution of all the commands in such category +# with valid categories are like @admin, @set, @sortedset, ... +# and so forth, see the full list in the server.c file where +# the Redis command table is described and defined. +# The special category @all means all the commands, but currently +# present in the server, and that will be loaded in the future +# via modules. +# +|first-arg Allow a specific first argument of an otherwise +# disabled command. It is only supported on commands with +# no sub-commands, and is not allowed as negative form +# like -SELECT|1, only additive starting with "+". This +# feature is deprecated and may be removed in the future. +# allcommands Alias for +@all. Note that it implies the ability to execute +# all the future commands loaded via the modules system. +# nocommands Alias for -@all. +# ~ Add a pattern of keys that can be mentioned as part of +# commands. For instance ~* allows all the keys. The pattern +# is a glob-style pattern like the one of KEYS. +# It is possible to specify multiple patterns. +# %R~ Add key read pattern that specifies which keys can be read +# from. +# %W~ Add key write pattern that specifies which keys can be +# written to. +# allkeys Alias for ~* +# resetkeys Flush the list of allowed keys patterns. +# & Add a glob-style pattern of Pub/Sub channels that can be +# accessed by the user. It is possible to specify multiple channel +# patterns. +# allchannels Alias for &* +# resetchannels Flush the list of allowed channel patterns. +# > Add this password to the list of valid password for the user. +# For example >mypass will add "mypass" to the list. +# This directive clears the "nopass" flag (see later). +# < Remove this password from the list of valid passwords. +# nopass All the set passwords of the user are removed, and the user +# is flagged as requiring no password: it means that every +# password will work against this user. If this directive is +# used for the default user, every new connection will be +# immediately authenticated with the default user without +# any explicit AUTH command required. Note that the "resetpass" +# directive will clear this condition. +# resetpass Flush the list of allowed passwords. Moreover removes the +# "nopass" status. After "resetpass" the user has no associated +# passwords and there is no way to authenticate without adding +# some password (or setting it as "nopass" later). +# reset Performs the following actions: resetpass, resetkeys, off, +# -@all. The user returns to the same state it has immediately +# after its creation. +# () Create a new selector with the options specified within the +# parentheses and attach it to the user. Each option should be +# space separated. The first character must be ( and the last +# character must be ). +# clearselectors Remove all of the currently attached selectors. +# Note this does not change the "root" user permissions, +# which are the permissions directly applied onto the +# user (outside the parentheses). +# +# ACL rules can be specified in any order: for instance you can start with +# passwords, then flags, or key patterns. However note that the additive +# and subtractive rules will CHANGE MEANING depending on the ordering. +# For instance see the following example: +# +# user alice on +@all -DEBUG ~* >somepassword +# +# This will allow "alice" to use all the commands with the exception of the +# DEBUG command, since +@all added all the commands to the set of the commands +# alice can use, and later DEBUG was removed. However if we invert the order +# of two ACL rules the result will be different: +# +# user alice on -DEBUG +@all ~* >somepassword +# +# Now DEBUG was removed when alice had yet no commands in the set of allowed +# commands, later all the commands are added, so the user will be able to +# execute everything. +# +# Basically ACL rules are processed left-to-right. +# +# The following is a list of command categories and their meanings: +# * keyspace - Writing or reading from keys, databases, or their metadata +# in a type agnostic way. Includes DEL, RESTORE, DUMP, RENAME, EXISTS, DBSIZE, +# KEYS, EXPIRE, TTL, FLUSHALL, etc. Commands that may modify the keyspace, +# key or metadata will also have `write` category. Commands that only read +# the keyspace, key or metadata will have the `read` category. +# * read - Reading from keys (values or metadata). Note that commands that don't +# interact with keys, will not have either `read` or `write`. +# * write - Writing to keys (values or metadata) +# * admin - Administrative commands. Normal applications will never need to use +# these. Includes REPLICAOF, CONFIG, DEBUG, SAVE, MONITOR, ACL, SHUTDOWN, etc. +# * dangerous - Potentially dangerous (each should be considered with care for +# various reasons). This includes FLUSHALL, MIGRATE, RESTORE, SORT, KEYS, +# CLIENT, DEBUG, INFO, CONFIG, SAVE, REPLICAOF, etc. +# * connection - Commands affecting the connection or other connections. +# This includes AUTH, SELECT, COMMAND, CLIENT, ECHO, PING, etc. +# * blocking - Potentially blocking the connection until released by another +# command. +# * fast - Fast O(1) commands. May loop on the number of arguments, but not the +# number of elements in the key. +# * slow - All commands that are not Fast. +# * pubsub - PUBLISH / SUBSCRIBE related +# * transaction - WATCH / MULTI / EXEC related commands. +# * scripting - Scripting related. +# * set - Data type: sets related. +# * sortedset - Data type: zsets related. +# * list - Data type: lists related. +# * hash - Data type: hashes related. +# * string - Data type: strings related. +# * bitmap - Data type: bitmaps related. +# * hyperloglog - Data type: hyperloglog related. +# * geo - Data type: geo related. +# * stream - Data type: streams related. +# +# For more information about ACL configuration please refer to +# the Redis web site at https://redis.io/topics/acl + +# ACL LOG +# +# The ACL Log tracks failed commands and authentication events associated +# with ACLs. The ACL Log is useful to troubleshoot failed commands blocked +# by ACLs. The ACL Log is stored in memory. You can reclaim memory with +# ACL LOG RESET. Define the maximum entry length of the ACL Log below. +acllog-max-len 128 + +# Using an external ACL file +# +# Instead of configuring users here in this file, it is possible to use +# a stand-alone file just listing users. The two methods cannot be mixed: +# if you configure users here and at the same time you activate the external +# ACL file, the server will refuse to start. +# +# The format of the external ACL user file is exactly the same as the +# format that is used inside redis.conf to describe users. +# +# aclfile /etc/redis/users.acl + +# IMPORTANT NOTE: starting with Redis 6 "requirepass" is just a compatibility +# layer on top of the new ACL system. The option effect will be just setting +# the password for the default user. Clients will still authenticate using +# AUTH as usually, or more explicitly with AUTH default +# if they follow the new protocol: both will work. +# +# The requirepass is not compatible with aclfile option and the ACL LOAD +# command, these will cause requirepass to be ignored. +# +requirepass KT-i5#i%-%LxKfZ5YJj6 + +# New users are initialized with restrictive permissions by default, via the +# equivalent of this ACL rule 'off resetkeys -@all'. Starting with Redis 6.2, it +# is possible to manage access to Pub/Sub channels with ACL rules as well. The +# default Pub/Sub channels permission if new users is controlled by the +# acl-pubsub-default configuration directive, which accepts one of these values: +# +# allchannels: grants access to all Pub/Sub channels +# resetchannels: revokes access to all Pub/Sub channels +# +# From Redis 7.0, acl-pubsub-default defaults to 'resetchannels' permission. +# +# acl-pubsub-default resetchannels + +# Command renaming (DEPRECATED). +# +# ------------------------------------------------------------------------ +# WARNING: avoid using this option if possible. Instead use ACLs to remove +# commands from the default user, and put them only in some admin user you +# create for administrative purposes. +# ------------------------------------------------------------------------ +# +# It is possible to change the name of dangerous commands in a shared +# environment. For instance the CONFIG command may be renamed into something +# hard to guess so that it will still be available for internal-use tools +# but not available for general clients. +# +# Example: +# +# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 +# +# It is also possible to completely kill a command by renaming it into +# an empty string: +# +# rename-command CONFIG "" +# +# Please note that changing the name of commands that are logged into the +# AOF file or transmitted to replicas may cause problems. + +################################### CLIENTS #################################### + +# Set the max number of connected clients at the same time. By default +# this limit is set to 10000 clients, however if the Redis server is not +# able to configure the process file limit to allow for the specified limit +# the max number of allowed clients is set to the current file limit +# minus 32 (as Redis reserves a few file descriptors for internal uses). +# +# Once the limit is reached Redis will close all the new connections sending +# an error 'max number of clients reached'. +# +# IMPORTANT: When Redis Cluster is used, the max number of connections is also +# shared with the cluster bus: every node in the cluster will use two +# connections, one incoming and another outgoing. It is important to size the +# limit accordingly in case of very large clusters. +# +# maxclients 10000 + +############################## MEMORY MANAGEMENT ################################ + +# Set a memory usage limit to the specified amount of bytes. +# When the memory limit is reached Redis will try to remove keys +# according to the eviction policy selected (see maxmemory-policy). +# +# If Redis can't remove keys according to the policy, or if the policy is +# set to 'noeviction', Redis will start to reply with errors to commands +# that would use more memory, like SET, LPUSH, and so on, and will continue +# to reply to read-only commands like GET. +# +# This option is usually useful when using Redis as an LRU or LFU cache, or to +# set a hard memory limit for an instance (using the 'noeviction' policy). +# +# WARNING: If you have replicas attached to an instance with maxmemory on, +# the size of the output buffers needed to feed the replicas are subtracted +# from the used memory count, so that network problems / resyncs will +# not trigger a loop where keys are evicted, and in turn the output +# buffer of replicas is full with DELs of keys evicted triggering the deletion +# of more keys, and so forth until the database is completely emptied. +# +# In short... if you have replicas attached it is suggested that you set a lower +# limit for maxmemory so that there is some free RAM on the system for replica +# output buffers (but this is not needed if the policy is 'noeviction'). +# +# maxmemory + +# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory +# is reached. You can select one from the following behaviors: +# +# volatile-lru -> Evict using approximated LRU, only keys with an expire set. +# allkeys-lru -> Evict any key using approximated LRU. +# volatile-lfu -> Evict using approximated LFU, only keys with an expire set. +# allkeys-lfu -> Evict any key using approximated LFU. +# volatile-random -> Remove a random key having an expire set. +# allkeys-random -> Remove a random key, any key. +# volatile-ttl -> Remove the key with the nearest expire time (minor TTL) +# noeviction -> Don't evict anything, just return an error on write operations. +# +# LRU means Least Recently Used +# LFU means Least Frequently Used +# +# Both LRU, LFU and volatile-ttl are implemented using approximated +# randomized algorithms. +# +# Note: with any of the above policies, when there are no suitable keys for +# eviction, Redis will return an error on write operations that require +# more memory. These are usually commands that create new keys, add data or +# modify existing keys. A few examples are: SET, INCR, HSET, LPUSH, SUNIONSTORE, +# SORT (due to the STORE argument), and EXEC (if the transaction includes any +# command that requires memory). +# +# The default is: +# +# maxmemory-policy noeviction + +# LRU, LFU and minimal TTL algorithms are not precise algorithms but approximated +# algorithms (in order to save memory), so you can tune it for speed or +# accuracy. By default Redis will check five keys and pick the one that was +# used least recently, you can change the sample size using the following +# configuration directive. +# +# The default of 5 produces good enough results. 10 Approximates very closely +# true LRU but costs more CPU. 3 is faster but not very accurate. +# +# maxmemory-samples 5 + +# Eviction processing is designed to function well with the default setting. +# If there is an unusually large amount of write traffic, this value may need to +# be increased. Decreasing this value may reduce latency at the risk of +# eviction processing effectiveness +# 0 = minimum latency, 10 = default, 100 = process without regard to latency +# +# maxmemory-eviction-tenacity 10 + +# Starting from Redis 5, by default a replica will ignore its maxmemory setting +# (unless it is promoted to master after a failover or manually). It means +# that the eviction of keys will be just handled by the master, sending the +# DEL commands to the replica as keys evict in the master side. +# +# This behavior ensures that masters and replicas stay consistent, and is usually +# what you want, however if your replica is writable, or you want the replica +# to have a different memory setting, and you are sure all the writes performed +# to the replica are idempotent, then you may change this default (but be sure +# to understand what you are doing). +# +# Note that since the replica by default does not evict, it may end using more +# memory than the one set via maxmemory (there are certain buffers that may +# be larger on the replica, or data structures may sometimes take more memory +# and so forth). So make sure you monitor your replicas and make sure they +# have enough memory to never hit a real out-of-memory condition before the +# master hits the configured maxmemory setting. +# +# replica-ignore-maxmemory yes + +# Redis reclaims expired keys in two ways: upon access when those keys are +# found to be expired, and also in background, in what is called the +# "active expire key". The key space is slowly and interactively scanned +# looking for expired keys to reclaim, so that it is possible to free memory +# of keys that are expired and will never be accessed again in a short time. +# +# The default effort of the expire cycle will try to avoid having more than +# ten percent of expired keys still in memory, and will try to avoid consuming +# more than 25% of total memory and to add latency to the system. However +# it is possible to increase the expire "effort" that is normally set to +# "1", to a greater value, up to the value "10". At its maximum value the +# system will use more CPU, longer cycles (and technically may introduce +# more latency), and will tolerate less already expired keys still present +# in the system. It's a tradeoff between memory, CPU and latency. +# +# active-expire-effort 1 + +############################# LAZY FREEING #################################### + +# Redis has two primitives to delete keys. One is called DEL and is a blocking +# deletion of the object. It means that the server stops processing new commands +# in order to reclaim all the memory associated with an object in a synchronous +# way. If the key deleted is associated with a small object, the time needed +# in order to execute the DEL command is very small and comparable to most other +# O(1) or O(log_N) commands in Redis. However if the key is associated with an +# aggregated value containing millions of elements, the server can block for +# a long time (even seconds) in order to complete the operation. +# +# For the above reasons Redis also offers non blocking deletion primitives +# such as UNLINK (non blocking DEL) and the ASYNC option of FLUSHALL and +# FLUSHDB commands, in order to reclaim memory in background. Those commands +# are executed in constant time. Another thread will incrementally free the +# object in the background as fast as possible. +# +# DEL, UNLINK and ASYNC option of FLUSHALL and FLUSHDB are user-controlled. +# It's up to the design of the application to understand when it is a good +# idea to use one or the other. However the Redis server sometimes has to +# delete keys or flush the whole database as a side effect of other operations. +# Specifically Redis deletes objects independently of a user call in the +# following scenarios: +# +# 1) On eviction, because of the maxmemory and maxmemory policy configurations, +# in order to make room for new data, without going over the specified +# memory limit. +# 2) Because of expire: when a key with an associated time to live (see the +# EXPIRE command) must be deleted from memory. +# 3) Because of a side effect of a command that stores data on a key that may +# already exist. For example the RENAME command may delete the old key +# content when it is replaced with another one. Similarly SUNIONSTORE +# or SORT with STORE option may delete existing keys. The SET command +# itself removes any old content of the specified key in order to replace +# it with the specified string. +# 4) During replication, when a replica performs a full resynchronization with +# its master, the content of the whole database is removed in order to +# load the RDB file just transferred. +# +# In all the above cases the default is to delete objects in a blocking way, +# like if DEL was called. However you can configure each case specifically +# in order to instead release memory in a non-blocking way like if UNLINK +# was called, using the following configuration directives. + +lazyfree-lazy-eviction no +lazyfree-lazy-expire no +lazyfree-lazy-server-del no +replica-lazy-flush no + +# It is also possible, for the case when to replace the user code DEL calls +# with UNLINK calls is not easy, to modify the default behavior of the DEL +# command to act exactly like UNLINK, using the following configuration +# directive: + +lazyfree-lazy-user-del no + +# FLUSHDB, FLUSHALL, SCRIPT FLUSH and FUNCTION FLUSH support both asynchronous and synchronous +# deletion, which can be controlled by passing the [SYNC|ASYNC] flags into the +# commands. When neither flag is passed, this directive will be used to determine +# if the data should be deleted asynchronously. + +lazyfree-lazy-user-flush no + +################################ THREADED I/O ################################# + +# Redis is mostly single threaded, however there are certain threaded +# operations such as UNLINK, slow I/O accesses and other things that are +# performed on side threads. +# +# Now it is also possible to handle Redis clients socket reads and writes +# in different I/O threads. Since especially writing is so slow, normally +# Redis users use pipelining in order to speed up the Redis performances per +# core, and spawn multiple instances in order to scale more. Using I/O +# threads it is possible to easily speedup two times Redis without resorting +# to pipelining nor sharding of the instance. +# +# By default threading is disabled, we suggest enabling it only in machines +# that have at least 4 or more cores, leaving at least one spare core. +# Using more than 8 threads is unlikely to help much. We also recommend using +# threaded I/O only if you actually have performance problems, with Redis +# instances being able to use a quite big percentage of CPU time, otherwise +# there is no point in using this feature. +# +# So for instance if you have a four cores boxes, try to use 2 or 3 I/O +# threads, if you have a 8 cores, try to use 6 threads. In order to +# enable I/O threads use the following configuration directive: +# +# io-threads 4 +# +# Setting io-threads to 1 will just use the main thread as usual. +# When I/O threads are enabled, we only use threads for writes, that is +# to thread the write(2) syscall and transfer the client buffers to the +# socket. However it is also possible to enable threading of reads and +# protocol parsing using the following configuration directive, by setting +# it to yes: +# +# io-threads-do-reads no +# +# Usually threading reads doesn't help much. +# +# NOTE 1: This configuration directive cannot be changed at runtime via +# CONFIG SET. Also, this feature currently does not work when SSL is +# enabled. +# +# NOTE 2: If you want to test the Redis speedup using redis-benchmark, make +# sure you also run the benchmark itself in threaded mode, using the +# --threads option to match the number of Redis threads, otherwise you'll not +# be able to notice the improvements. + +############################ KERNEL OOM CONTROL ############################## + +# On Linux, it is possible to hint the kernel OOM killer on what processes +# should be killed first when out of memory. +# +# Enabling this feature makes Redis actively control the oom_score_adj value +# for all its processes, depending on their role. The default scores will +# attempt to have background child processes killed before all others, and +# replicas killed before masters. +# +# Redis supports these options: +# +# no: Don't make changes to oom-score-adj (default). +# yes: Alias to "relative" see below. +# absolute: Values in oom-score-adj-values are written as is to the kernel. +# relative: Values are used relative to the initial value of oom_score_adj when +# the server starts and are then clamped to a range of -1000 to 1000. +# Because typically the initial value is 0, they will often match the +# absolute values. +oom-score-adj no + +# When oom-score-adj is used, this directive controls the specific values used +# for master, replica and background child processes. Values range -2000 to +# 2000 (higher means more likely to be killed). +# +# Unprivileged processes (not root, and without CAP_SYS_RESOURCE capabilities) +# can freely increase their value, but not decrease it below its initial +# settings. This means that setting oom-score-adj to "relative" and setting the +# oom-score-adj-values to positive values will always succeed. +oom-score-adj-values 0 200 800 + + +#################### KERNEL transparent hugepage CONTROL ###################### + +# Usually the kernel Transparent Huge Pages control is set to "madvise" or +# or "never" by default (/sys/kernel/mm/transparent_hugepage/enabled), in which +# case this config has no effect. On systems in which it is set to "always", +# redis will attempt to disable it specifically for the redis process in order +# to avoid latency problems specifically with fork(2) and CoW. +# If for some reason you prefer to keep it enabled, you can set this config to +# "no" and the kernel global to "always". + +disable-thp yes + +############################## APPEND ONLY MODE ############################### + +# By default Redis asynchronously dumps the dataset on disk. This mode is +# good enough in many applications, but an issue with the Redis process or +# a power outage may result into a few minutes of writes lost (depending on +# the configured save points). +# +# The Append Only File is an alternative persistence mode that provides +# much better durability. For instance using the default data fsync policy +# (see later in the config file) Redis can lose just one second of writes in a +# dramatic event like a server power outage, or a single write if something +# wrong with the Redis process itself happens, but the operating system is +# still running correctly. +# +# AOF and RDB persistence can be enabled at the same time without problems. +# If the AOF is enabled on startup Redis will load the AOF, that is the file +# with the better durability guarantees. +# +# Please check https://redis.io/topics/persistence for more information. + +appendonly no + +# The base name of the append only file. +# +# Redis 7 and newer use a set of append-only files to persist the dataset +# and changes applied to it. There are two basic types of files in use: +# +# - Base files, which are a snapshot representing the complete state of the +# dataset at the time the file was created. Base files can be either in +# the form of RDB (binary serialized) or AOF (textual commands). +# - Incremental files, which contain additional commands that were applied +# to the dataset following the previous file. +# +# In addition, manifest files are used to track the files and the order in +# which they were created and should be applied. +# +# Append-only file names are created by Redis following a specific pattern. +# The file name's prefix is based on the 'appendfilename' configuration +# parameter, followed by additional information about the sequence and type. +# +# For example, if appendfilename is set to appendonly.aof, the following file +# names could be derived: +# +# - appendonly.aof.1.base.rdb as a base file. +# - appendonly.aof.1.incr.aof, appendonly.aof.2.incr.aof as incremental files. +# - appendonly.aof.manifest as a manifest file. + +appendfilename "appendonly.aof" + +# For convenience, Redis stores all persistent append-only files in a dedicated +# directory. The name of the directory is determined by the appenddirname +# configuration parameter. + +appenddirname "appendonlydir" + +# The fsync() call tells the Operating System to actually write data on disk +# instead of waiting for more data in the output buffer. Some OS will really flush +# data on disk, some other OS will just try to do it ASAP. +# +# Redis supports three different modes: +# +# no: don't fsync, just let the OS flush the data when it wants. Faster. +# always: fsync after every write to the append only log. Slow, Safest. +# everysec: fsync only one time every second. Compromise. +# +# The default is "everysec", as that's usually the right compromise between +# speed and data safety. It's up to you to understand if you can relax this to +# "no" that will let the operating system flush the output buffer when +# it wants, for better performances (but if you can live with the idea of +# some data loss consider the default persistence mode that's snapshotting), +# or on the contrary, use "always" that's very slow but a bit safer than +# everysec. +# +# More details please check the following article: +# http://antirez.com/post/redis-persistence-demystified.html +# +# If unsure, use "everysec". + +# appendfsync always +appendfsync everysec +# appendfsync no + +# When the AOF fsync policy is set to always or everysec, and a background +# saving process (a background save or AOF log background rewriting) is +# performing a lot of I/O against the disk, in some Linux configurations +# Redis may block too long on the fsync() call. Note that there is no fix for +# this currently, as even performing fsync in a different thread will block +# our synchronous write(2) call. +# +# In order to mitigate this problem it's possible to use the following option +# that will prevent fsync() from being called in the main process while a +# BGSAVE or BGREWRITEAOF is in progress. +# +# This means that while another child is saving, the durability of Redis is +# the same as "appendfsync no". In practical terms, this means that it is +# possible to lose up to 30 seconds of log in the worst scenario (with the +# default Linux settings). +# +# If you have latency problems turn this to "yes". Otherwise leave it as +# "no" that is the safest pick from the point of view of durability. + +no-appendfsync-on-rewrite no + +# Automatic rewrite of the append only file. +# Redis is able to automatically rewrite the log file implicitly calling +# BGREWRITEAOF when the AOF log size grows by the specified percentage. +# +# This is how it works: Redis remembers the size of the AOF file after the +# latest rewrite (if no rewrite has happened since the restart, the size of +# the AOF at startup is used). +# +# This base size is compared to the current size. If the current size is +# bigger than the specified percentage, the rewrite is triggered. Also +# you need to specify a minimal size for the AOF file to be rewritten, this +# is useful to avoid rewriting the AOF file even if the percentage increase +# is reached but it is still pretty small. +# +# Specify a percentage of zero in order to disable the automatic AOF +# rewrite feature. + +auto-aof-rewrite-percentage 100 +auto-aof-rewrite-min-size 64mb + +# An AOF file may be found to be truncated at the end during the Redis +# startup process, when the AOF data gets loaded back into memory. +# This may happen when the system where Redis is running +# crashes, especially when an ext4 filesystem is mounted without the +# data=ordered option (however this can't happen when Redis itself +# crashes or aborts but the operating system still works correctly). +# +# Redis can either exit with an error when this happens, or load as much +# data as possible (the default now) and start if the AOF file is found +# to be truncated at the end. The following option controls this behavior. +# +# If aof-load-truncated is set to yes, a truncated AOF file is loaded and +# the Redis server starts emitting a log to inform the user of the event. +# Otherwise if the option is set to no, the server aborts with an error +# and refuses to start. When the option is set to no, the user requires +# to fix the AOF file using the "redis-check-aof" utility before to restart +# the server. +# +# Note that if the AOF file will be found to be corrupted in the middle +# the server will still exit with an error. This option only applies when +# Redis will try to read more data from the AOF file but not enough bytes +# will be found. +aof-load-truncated yes + +# Redis can create append-only base files in either RDB or AOF formats. Using +# the RDB format is always faster and more efficient, and disabling it is only +# supported for backward compatibility purposes. +aof-use-rdb-preamble yes + +# Redis supports recording timestamp annotations in the AOF to support restoring +# the data from a specific point-in-time. However, using this capability changes +# the AOF format in a way that may not be compatible with existing AOF parsers. +aof-timestamp-enabled no + +################################ SHUTDOWN ##################################### + +# Maximum time to wait for replicas when shutting down, in seconds. +# +# During shut down, a grace period allows any lagging replicas to catch up with +# the latest replication offset before the master exists. This period can +# prevent data loss, especially for deployments without configured disk backups. +# +# The 'shutdown-timeout' value is the grace period's duration in seconds. It is +# only applicable when the instance has replicas. To disable the feature, set +# the value to 0. +# +# shutdown-timeout 10 + +# When Redis receives a SIGINT or SIGTERM, shutdown is initiated and by default +# an RDB snapshot is written to disk in a blocking operation if save points are configured. +# The options used on signaled shutdown can include the following values: +# default: Saves RDB snapshot only if save points are configured. +# Waits for lagging replicas to catch up. +# save: Forces a DB saving operation even if no save points are configured. +# nosave: Prevents DB saving operation even if one or more save points are configured. +# now: Skips waiting for lagging replicas. +# force: Ignores any errors that would normally prevent the server from exiting. +# +# Any combination of values is allowed as long as "save" and "nosave" are not set simultaneously. +# Example: "nosave force now" +# +# shutdown-on-sigint default +# shutdown-on-sigterm default + +################ NON-DETERMINISTIC LONG BLOCKING COMMANDS ##################### + +# Maximum time in milliseconds for EVAL scripts, functions and in some cases +# modules' commands before Redis can start processing or rejecting other clients. +# +# If the maximum execution time is reached Redis will start to reply to most +# commands with a BUSY error. +# +# In this state Redis will only allow a handful of commands to be executed. +# For instance, SCRIPT KILL, FUNCTION KILL, SHUTDOWN NOSAVE and possibly some +# module specific 'allow-busy' commands. +# +# SCRIPT KILL and FUNCTION KILL will only be able to stop a script that did not +# yet call any write commands, so SHUTDOWN NOSAVE may be the only way to stop +# the server in the case a write command was already issued by the script when +# the user doesn't want to wait for the natural termination of the script. +# +# The default is 5 seconds. It is possible to set it to 0 or a negative value +# to disable this mechanism (uninterrupted execution). Note that in the past +# this config had a different name, which is now an alias, so both of these do +# the same: +# lua-time-limit 5000 +# busy-reply-threshold 5000 + +################################ REDIS CLUSTER ############################### + +# Normal Redis instances can't be part of a Redis Cluster; only nodes that are +# started as cluster nodes can. In order to start a Redis instance as a +# cluster node enable the cluster support uncommenting the following: +# +# cluster-enabled yes + +# Every cluster node has a cluster configuration file. This file is not +# intended to be edited by hand. It is created and updated by Redis nodes. +# Every Redis Cluster node requires a different cluster configuration file. +# Make sure that instances running in the same system do not have +# overlapping cluster configuration file names. +# +# cluster-config-file nodes-6379.conf + +# Cluster node timeout is the amount of milliseconds a node must be unreachable +# for it to be considered in failure state. +# Most other internal time limits are a multiple of the node timeout. +# +# cluster-node-timeout 15000 + +# The cluster port is the port that the cluster bus will listen for inbound connections on. When set +# to the default value, 0, it will be bound to the command port + 10000. Setting this value requires +# you to specify the cluster bus port when executing cluster meet. +# cluster-port 0 + +# A replica of a failing master will avoid to start a failover if its data +# looks too old. +# +# There is no simple way for a replica to actually have an exact measure of +# its "data age", so the following two checks are performed: +# +# 1) If there are multiple replicas able to failover, they exchange messages +# in order to try to give an advantage to the replica with the best +# replication offset (more data from the master processed). +# Replicas will try to get their rank by offset, and apply to the start +# of the failover a delay proportional to their rank. +# +# 2) Every single replica computes the time of the last interaction with +# its master. This can be the last ping or command received (if the master +# is still in the "connected" state), or the time that elapsed since the +# disconnection with the master (if the replication link is currently down). +# If the last interaction is too old, the replica will not try to failover +# at all. +# +# The point "2" can be tuned by user. Specifically a replica will not perform +# the failover if, since the last interaction with the master, the time +# elapsed is greater than: +# +# (node-timeout * cluster-replica-validity-factor) + repl-ping-replica-period +# +# So for example if node-timeout is 30 seconds, and the cluster-replica-validity-factor +# is 10, and assuming a default repl-ping-replica-period of 10 seconds, the +# replica will not try to failover if it was not able to talk with the master +# for longer than 310 seconds. +# +# A large cluster-replica-validity-factor may allow replicas with too old data to failover +# a master, while a too small value may prevent the cluster from being able to +# elect a replica at all. +# +# For maximum availability, it is possible to set the cluster-replica-validity-factor +# to a value of 0, which means, that replicas will always try to failover the +# master regardless of the last time they interacted with the master. +# (However they'll always try to apply a delay proportional to their +# offset rank). +# +# Zero is the only value able to guarantee that when all the partitions heal +# the cluster will always be able to continue. +# +# cluster-replica-validity-factor 10 + +# Cluster replicas are able to migrate to orphaned masters, that are masters +# that are left without working replicas. This improves the cluster ability +# to resist to failures as otherwise an orphaned master can't be failed over +# in case of failure if it has no working replicas. +# +# Replicas migrate to orphaned masters only if there are still at least a +# given number of other working replicas for their old master. This number +# is the "migration barrier". A migration barrier of 1 means that a replica +# will migrate only if there is at least 1 other working replica for its master +# and so forth. It usually reflects the number of replicas you want for every +# master in your cluster. +# +# Default is 1 (replicas migrate only if their masters remain with at least +# one replica). To disable migration just set it to a very large value or +# set cluster-allow-replica-migration to 'no'. +# A value of 0 can be set but is useful only for debugging and dangerous +# in production. +# +# cluster-migration-barrier 1 + +# Turning off this option allows to use less automatic cluster configuration. +# It both disables migration to orphaned masters and migration from masters +# that became empty. +# +# Default is 'yes' (allow automatic migrations). +# +# cluster-allow-replica-migration yes + +# By default Redis Cluster nodes stop accepting queries if they detect there +# is at least a hash slot uncovered (no available node is serving it). +# This way if the cluster is partially down (for example a range of hash slots +# are no longer covered) all the cluster becomes, eventually, unavailable. +# It automatically returns available as soon as all the slots are covered again. +# +# However sometimes you want the subset of the cluster which is working, +# to continue to accept queries for the part of the key space that is still +# covered. In order to do so, just set the cluster-require-full-coverage +# option to no. +# +# cluster-require-full-coverage yes + +# This option, when set to yes, prevents replicas from trying to failover its +# master during master failures. However the replica can still perform a +# manual failover, if forced to do so. +# +# This is useful in different scenarios, especially in the case of multiple +# data center operations, where we want one side to never be promoted if not +# in the case of a total DC failure. +# +# cluster-replica-no-failover no + +# This option, when set to yes, allows nodes to serve read traffic while the +# cluster is in a down state, as long as it believes it owns the slots. +# +# This is useful for two cases. The first case is for when an application +# doesn't require consistency of data during node failures or network partitions. +# One example of this is a cache, where as long as the node has the data it +# should be able to serve it. +# +# The second use case is for configurations that don't meet the recommended +# three shards but want to enable cluster mode and scale later. A +# master outage in a 1 or 2 shard configuration causes a read/write outage to the +# entire cluster without this option set, with it set there is only a write outage. +# Without a quorum of masters, slot ownership will not change automatically. +# +# cluster-allow-reads-when-down no + +# This option, when set to yes, allows nodes to serve pubsub shard traffic while +# the cluster is in a down state, as long as it believes it owns the slots. +# +# This is useful if the application would like to use the pubsub feature even when +# the cluster global stable state is not OK. If the application wants to make sure only +# one shard is serving a given channel, this feature should be kept as yes. +# +# cluster-allow-pubsubshard-when-down yes + +# Cluster link send buffer limit is the limit on the memory usage of an individual +# cluster bus link's send buffer in bytes. Cluster links would be freed if they exceed +# this limit. This is to primarily prevent send buffers from growing unbounded on links +# toward slow peers (E.g. PubSub messages being piled up). +# This limit is disabled by default. Enable this limit when 'mem_cluster_links' INFO field +# and/or 'send-buffer-allocated' entries in the 'CLUSTER LINKS` command output continuously increase. +# Minimum limit of 1gb is recommended so that cluster link buffer can fit in at least a single +# PubSub message by default. (client-query-buffer-limit default value is 1gb) +# +# cluster-link-sendbuf-limit 0 + +# Clusters can configure their announced hostname using this config. This is a common use case for +# applications that need to use TLS Server Name Indication (SNI) or dealing with DNS based +# routing. By default this value is only shown as additional metadata in the CLUSTER SLOTS +# command, but can be changed using 'cluster-preferred-endpoint-type' config. This value is +# communicated along the clusterbus to all nodes, setting it to an empty string will remove +# the hostname and also propagate the removal. +# +# cluster-announce-hostname "" + +# Clusters can advertise how clients should connect to them using either their IP address, +# a user defined hostname, or by declaring they have no endpoint. Which endpoint is +# shown as the preferred endpoint is set by using the cluster-preferred-endpoint-type +# config with values 'ip', 'hostname', or 'unknown-endpoint'. This value controls how +# the endpoint returned for MOVED/ASKING requests as well as the first field of CLUSTER SLOTS. +# If the preferred endpoint type is set to hostname, but no announced hostname is set, a '?' +# will be returned instead. +# +# When a cluster advertises itself as having an unknown endpoint, it's indicating that +# the server doesn't know how clients can reach the cluster. This can happen in certain +# networking situations where there are multiple possible routes to the node, and the +# server doesn't know which one the client took. In this case, the server is expecting +# the client to reach out on the same endpoint it used for making the last request, but use +# the port provided in the response. +# +# cluster-preferred-endpoint-type ip + +# In order to setup your cluster make sure to read the documentation +# available at https://redis.io web site. + +########################## CLUSTER DOCKER/NAT support ######################## + +# In certain deployments, Redis Cluster nodes address discovery fails, because +# addresses are NAT-ted or because ports are forwarded (the typical case is +# Docker and other containers). +# +# In order to make Redis Cluster working in such environments, a static +# configuration where each node knows its public address is needed. The +# following four options are used for this scope, and are: +# +# * cluster-announce-ip +# * cluster-announce-port +# * cluster-announce-tls-port +# * cluster-announce-bus-port +# +# Each instructs the node about its address, client ports (for connections +# without and with TLS) and cluster message bus port. The information is then +# published in the header of the bus packets so that other nodes will be able to +# correctly map the address of the node publishing the information. +# +# If cluster-tls is set to yes and cluster-announce-tls-port is omitted or set +# to zero, then cluster-announce-port refers to the TLS port. Note also that +# cluster-announce-tls-port has no effect if cluster-tls is set to no. +# +# If the above options are not used, the normal Redis Cluster auto-detection +# will be used instead. +# +# Note that when remapped, the bus port may not be at the fixed offset of +# clients port + 10000, so you can specify any port and bus-port depending +# on how they get remapped. If the bus-port is not set, a fixed offset of +# 10000 will be used as usual. +# +# Example: +# +# cluster-announce-ip 10.1.1.5 +# cluster-announce-tls-port 6379 +# cluster-announce-port 0 +# cluster-announce-bus-port 6380 + +################################## SLOW LOG ################################### + +# The Redis Slow Log is a system to log queries that exceeded a specified +# execution time. The execution time does not include the I/O operations +# like talking with the client, sending the reply and so forth, +# but just the time needed to actually execute the command (this is the only +# stage of command execution where the thread is blocked and can not serve +# other requests in the meantime). +# +# You can configure the slow log with two parameters: one tells Redis +# what is the execution time, in microseconds, to exceed in order for the +# command to get logged, and the other parameter is the length of the +# slow log. When a new command is logged the oldest one is removed from the +# queue of logged commands. + +# The following time is expressed in microseconds, so 1000000 is equivalent +# to one second. Note that a negative number disables the slow log, while +# a value of zero forces the logging of every command. +slowlog-log-slower-than 10000 + +# There is no limit to this length. Just be aware that it will consume memory. +# You can reclaim memory used by the slow log with SLOWLOG RESET. +slowlog-max-len 128 + +################################ LATENCY MONITOR ############################## + +# The Redis latency monitoring subsystem samples different operations +# at runtime in order to collect data related to possible sources of +# latency of a Redis instance. +# +# Via the LATENCY command this information is available to the user that can +# print graphs and obtain reports. +# +# The system only logs operations that were performed in a time equal or +# greater than the amount of milliseconds specified via the +# latency-monitor-threshold configuration directive. When its value is set +# to zero, the latency monitor is turned off. +# +# By default latency monitoring is disabled since it is mostly not needed +# if you don't have latency issues, and collecting data has a performance +# impact, that while very small, can be measured under big load. Latency +# monitoring can easily be enabled at runtime using the command +# "CONFIG SET latency-monitor-threshold " if needed. +latency-monitor-threshold 0 + +################################ LATENCY TRACKING ############################## + +# The Redis extended latency monitoring tracks the per command latencies and enables +# exporting the percentile distribution via the INFO latencystats command, +# and cumulative latency distributions (histograms) via the LATENCY command. +# +# By default, the extended latency monitoring is enabled since the overhead +# of keeping track of the command latency is very small. +# latency-tracking yes + +# By default the exported latency percentiles via the INFO latencystats command +# are the p50, p99, and p999. +# latency-tracking-info-percentiles 50 99 99.9 + +############################# EVENT NOTIFICATION ############################## + +# Redis can notify Pub/Sub clients about events happening in the key space. +# This feature is documented at https://redis.io/topics/notifications +# +# For instance if keyspace events notification is enabled, and a client +# performs a DEL operation on key "foo" stored in the Database 0, two +# messages will be published via Pub/Sub: +# +# PUBLISH __keyspace@0__:foo del +# PUBLISH __keyevent@0__:del foo +# +# It is possible to select the events that Redis will notify among a set +# of classes. Every class is identified by a single character: +# +# K Keyspace events, published with __keyspace@__ prefix. +# E Keyevent events, published with __keyevent@__ prefix. +# g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ... +# $ String commands +# l List commands +# s Set commands +# h Hash commands +# z Sorted set commands +# x Expired events (events generated every time a key expires) +# e Evicted events (events generated when a key is evicted for maxmemory) +# n New key events (Note: not included in the 'A' class) +# t Stream commands +# d Module key type events +# m Key-miss events (Note: It is not included in the 'A' class) +# A Alias for g$lshzxetd, so that the "AKE" string means all the events +# (Except key-miss events which are excluded from 'A' due to their +# unique nature). +# +# The "notify-keyspace-events" takes as argument a string that is composed +# of zero or multiple characters. The empty string means that notifications +# are disabled. +# +# Example: to enable list and generic events, from the point of view of the +# event name, use: +# +# notify-keyspace-events Elg +# +# Example 2: to get the stream of the expired keys subscribing to channel +# name __keyevent@0__:expired use: +# +# notify-keyspace-events Ex +# +# By default all notifications are disabled because most users don't need +# this feature and the feature has some overhead. Note that if you don't +# specify at least one of K or E, no events will be delivered. +notify-keyspace-events "" + +############################### ADVANCED CONFIG ############################### + +# Hashes are encoded using a memory efficient data structure when they have a +# small number of entries, and the biggest entry does not exceed a given +# threshold. These thresholds can be configured using the following directives. +hash-max-listpack-entries 512 +hash-max-listpack-value 64 + +# Lists are also encoded in a special way to save a lot of space. +# The number of entries allowed per internal list node can be specified +# as a fixed maximum size or a maximum number of elements. +# For a fixed maximum size, use -5 through -1, meaning: +# -5: max size: 64 Kb <-- not recommended for normal workloads +# -4: max size: 32 Kb <-- not recommended +# -3: max size: 16 Kb <-- probably not recommended +# -2: max size: 8 Kb <-- good +# -1: max size: 4 Kb <-- good +# Positive numbers mean store up to _exactly_ that number of elements +# per list node. +# The highest performing option is usually -2 (8 Kb size) or -1 (4 Kb size), +# but if your use case is unique, adjust the settings as necessary. +list-max-listpack-size -2 + +# Lists may also be compressed. +# Compress depth is the number of quicklist ziplist nodes from *each* side of +# the list to *exclude* from compression. The head and tail of the list +# are always uncompressed for fast push/pop operations. Settings are: +# 0: disable all list compression +# 1: depth 1 means "don't start compressing until after 1 node into the list, +# going from either the head or tail" +# So: [head]->node->node->...->node->[tail] +# [head], [tail] will always be uncompressed; inner nodes will compress. +# 2: [head]->[next]->node->node->...->node->[prev]->[tail] +# 2 here means: don't compress head or head->next or tail->prev or tail, +# but compress all nodes between them. +# 3: [head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail] +# etc. +list-compress-depth 0 + +# Sets have a special encoding in just one case: when a set is composed +# of just strings that happen to be integers in radix 10 in the range +# of 64 bit signed integers. +# The following configuration setting sets the limit in the size of the +# set in order to use this special memory saving encoding. +set-max-intset-entries 512 + +# Similarly to hashes and lists, sorted sets are also specially encoded in +# order to save a lot of space. This encoding is only used when the length and +# elements of a sorted set are below the following limits: +zset-max-listpack-entries 128 +zset-max-listpack-value 64 + +# HyperLogLog sparse representation bytes limit. The limit includes the +# 16 bytes header. When an HyperLogLog using the sparse representation crosses +# this limit, it is converted into the dense representation. +# +# A value greater than 16000 is totally useless, since at that point the +# dense representation is more memory efficient. +# +# The suggested value is ~ 3000 in order to have the benefits of +# the space efficient encoding without slowing down too much PFADD, +# which is O(N) with the sparse encoding. The value can be raised to +# ~ 10000 when CPU is not a concern, but space is, and the data set is +# composed of many HyperLogLogs with cardinality in the 0 - 15000 range. +hll-sparse-max-bytes 3000 + +# Streams macro node max size / items. The stream data structure is a radix +# tree of big nodes that encode multiple items inside. Using this configuration +# it is possible to configure how big a single node can be in bytes, and the +# maximum number of items it may contain before switching to a new node when +# appending new stream entries. If any of the following settings are set to +# zero, the limit is ignored, so for instance it is possible to set just a +# max entries limit by setting max-bytes to 0 and max-entries to the desired +# value. +stream-node-max-bytes 4096 +stream-node-max-entries 100 + +# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in +# order to help rehashing the main Redis hash table (the one mapping top-level +# keys to values). The hash table implementation Redis uses (see dict.c) +# performs a lazy rehashing: the more operation you run into a hash table +# that is rehashing, the more rehashing "steps" are performed, so if the +# server is idle the rehashing is never complete and some more memory is used +# by the hash table. +# +# The default is to use this millisecond 10 times every second in order to +# actively rehash the main dictionaries, freeing memory when possible. +# +# If unsure: +# use "activerehashing no" if you have hard latency requirements and it is +# not a good thing in your environment that Redis can reply from time to time +# to queries with 2 milliseconds delay. +# +# use "activerehashing yes" if you don't have such hard requirements but +# want to free memory asap when possible. +activerehashing yes + +# The client output buffer limits can be used to force disconnection of clients +# that are not reading data from the server fast enough for some reason (a +# common reason is that a Pub/Sub client can't consume messages as fast as the +# publisher can produce them). +# +# The limit can be set differently for the three different classes of clients: +# +# normal -> normal clients including MONITOR clients +# replica -> replica clients +# pubsub -> clients subscribed to at least one pubsub channel or pattern +# +# The syntax of every client-output-buffer-limit directive is the following: +# +# client-output-buffer-limit +# +# A client is immediately disconnected once the hard limit is reached, or if +# the soft limit is reached and remains reached for the specified number of +# seconds (continuously). +# So for instance if the hard limit is 32 megabytes and the soft limit is +# 16 megabytes / 10 seconds, the client will get disconnected immediately +# if the size of the output buffers reach 32 megabytes, but will also get +# disconnected if the client reaches 16 megabytes and continuously overcomes +# the limit for 10 seconds. +# +# By default normal clients are not limited because they don't receive data +# without asking (in a push way), but just after a request, so only +# asynchronous clients may create a scenario where data is requested faster +# than it can read. +# +# Instead there is a default limit for pubsub and replica clients, since +# subscribers and replicas receive data in a push fashion. +# +# Note that it doesn't make sense to set the replica clients output buffer +# limit lower than the repl-backlog-size config (partial sync will succeed +# and then replica will get disconnected). +# Such a configuration is ignored (the size of repl-backlog-size will be used). +# This doesn't have memory consumption implications since the replica client +# will share the backlog buffers memory. +# +# Both the hard or the soft limit can be disabled by setting them to zero. +client-output-buffer-limit normal 0 0 0 +client-output-buffer-limit replica 256mb 64mb 60 +client-output-buffer-limit pubsub 32mb 8mb 60 + +# Client query buffers accumulate new commands. They are limited to a fixed +# amount by default in order to avoid that a protocol desynchronization (for +# instance due to a bug in the client) will lead to unbound memory usage in +# the query buffer. However you can configure it here if you have very special +# needs, such us huge multi/exec requests or alike. +# +# client-query-buffer-limit 1gb + +# In some scenarios client connections can hog up memory leading to OOM +# errors or data eviction. To avoid this we can cap the accumulated memory +# used by all client connections (all pubsub and normal clients). Once we +# reach that limit connections will be dropped by the server freeing up +# memory. The server will attempt to drop the connections using the most +# memory first. We call this mechanism "client eviction". +# +# Client eviction is configured using the maxmemory-clients setting as follows: +# 0 - client eviction is disabled (default) +# +# A memory value can be used for the client eviction threshold, +# for example: +# maxmemory-clients 1g +# +# A percentage value (between 1% and 100%) means the client eviction threshold +# is based on a percentage of the maxmemory setting. For example to set client +# eviction at 5% of maxmemory: +# maxmemory-clients 5% + +# In the Redis protocol, bulk requests, that are, elements representing single +# strings, are normally limited to 512 mb. However you can change this limit +# here, but must be 1mb or greater +# +# proto-max-bulk-len 512mb + +# Redis calls an internal function to perform many background tasks, like +# closing connections of clients in timeout, purging expired keys that are +# never requested, and so forth. +# +# Not all tasks are performed with the same frequency, but Redis checks for +# tasks to perform according to the specified "hz" value. +# +# By default "hz" is set to 10. Raising the value will use more CPU when +# Redis is idle, but at the same time will make Redis more responsive when +# there are many keys expiring at the same time, and timeouts may be +# handled with more precision. +# +# The range is between 1 and 500, however a value over 100 is usually not +# a good idea. Most users should use the default of 10 and raise this up to +# 100 only in environments where very low latency is required. +hz 10 + +# Normally it is useful to have an HZ value which is proportional to the +# number of clients connected. This is useful in order, for instance, to +# avoid too many clients are processed for each background task invocation +# in order to avoid latency spikes. +# +# Since the default HZ value by default is conservatively set to 10, Redis +# offers, and enables by default, the ability to use an adaptive HZ value +# which will temporarily raise when there are many connected clients. +# +# When dynamic HZ is enabled, the actual configured HZ will be used +# as a baseline, but multiples of the configured HZ value will be actually +# used as needed once more clients are connected. In this way an idle +# instance will use very little CPU time while a busy instance will be +# more responsive. +dynamic-hz yes + +# When a child rewrites the AOF file, if the following option is enabled +# the file will be fsync-ed every 4 MB of data generated. This is useful +# in order to commit the file to the disk more incrementally and avoid +# big latency spikes. +aof-rewrite-incremental-fsync yes + +# When redis saves RDB file, if the following option is enabled +# the file will be fsync-ed every 4 MB of data generated. This is useful +# in order to commit the file to the disk more incrementally and avoid +# big latency spikes. +rdb-save-incremental-fsync yes + +# Redis LFU eviction (see maxmemory setting) can be tuned. However it is a good +# idea to start with the default settings and only change them after investigating +# how to improve the performances and how the keys LFU change over time, which +# is possible to inspect via the OBJECT FREQ command. +# +# There are two tunable parameters in the Redis LFU implementation: the +# counter logarithm factor and the counter decay time. It is important to +# understand what the two parameters mean before changing them. +# +# The LFU counter is just 8 bits per key, it's maximum value is 255, so Redis +# uses a probabilistic increment with logarithmic behavior. Given the value +# of the old counter, when a key is accessed, the counter is incremented in +# this way: +# +# 1. A random number R between 0 and 1 is extracted. +# 2. A probability P is calculated as 1/(old_value*lfu_log_factor+1). +# 3. The counter is incremented only if R < P. +# +# The default lfu-log-factor is 10. This is a table of how the frequency +# counter changes with a different number of accesses with different +# logarithmic factors: +# +# +--------+------------+------------+------------+------------+------------+ +# | factor | 100 hits | 1000 hits | 100K hits | 1M hits | 10M hits | +# +--------+------------+------------+------------+------------+------------+ +# | 0 | 104 | 255 | 255 | 255 | 255 | +# +--------+------------+------------+------------+------------+------------+ +# | 1 | 18 | 49 | 255 | 255 | 255 | +# +--------+------------+------------+------------+------------+------------+ +# | 10 | 10 | 18 | 142 | 255 | 255 | +# +--------+------------+------------+------------+------------+------------+ +# | 100 | 8 | 11 | 49 | 143 | 255 | +# +--------+------------+------------+------------+------------+------------+ +# +# NOTE: The above table was obtained by running the following commands: +# +# redis-benchmark -n 1000000 incr foo +# redis-cli object freq foo +# +# NOTE 2: The counter initial value is 5 in order to give new objects a chance +# to accumulate hits. +# +# The counter decay time is the time, in minutes, that must elapse in order +# for the key counter to be divided by two (or decremented if it has a value +# less <= 10). +# +# The default value for the lfu-decay-time is 1. A special value of 0 means to +# decay the counter every time it happens to be scanned. +# +# lfu-log-factor 10 +# lfu-decay-time 1 + +########################### ACTIVE DEFRAGMENTATION ####################### +# +# What is active defragmentation? +# ------------------------------- +# +# Active (online) defragmentation allows a Redis server to compact the +# spaces left between small allocations and deallocations of data in memory, +# thus allowing to reclaim back memory. +# +# Fragmentation is a natural process that happens with every allocator (but +# less so with Jemalloc, fortunately) and certain workloads. Normally a server +# restart is needed in order to lower the fragmentation, or at least to flush +# away all the data and create it again. However thanks to this feature +# implemented by Oran Agra for Redis 4.0 this process can happen at runtime +# in a "hot" way, while the server is running. +# +# Basically when the fragmentation is over a certain level (see the +# configuration options below) Redis will start to create new copies of the +# values in contiguous memory regions by exploiting certain specific Jemalloc +# features (in order to understand if an allocation is causing fragmentation +# and to allocate it in a better place), and at the same time, will release the +# old copies of the data. This process, repeated incrementally for all the keys +# will cause the fragmentation to drop back to normal values. +# +# Important things to understand: +# +# 1. This feature is disabled by default, and only works if you compiled Redis +# to use the copy of Jemalloc we ship with the source code of Redis. +# This is the default with Linux builds. +# +# 2. You never need to enable this feature if you don't have fragmentation +# issues. +# +# 3. Once you experience fragmentation, you can enable this feature when +# needed with the command "CONFIG SET activedefrag yes". +# +# The configuration parameters are able to fine tune the behavior of the +# defragmentation process. If you are not sure about what they mean it is +# a good idea to leave the defaults untouched. + +# Active defragmentation is disabled by default +# activedefrag no + +# Minimum amount of fragmentation waste to start active defrag +# active-defrag-ignore-bytes 100mb + +# Minimum percentage of fragmentation to start active defrag +# active-defrag-threshold-lower 10 + +# Maximum percentage of fragmentation at which we use maximum effort +# active-defrag-threshold-upper 100 + +# Minimal effort for defrag in CPU percentage, to be used when the lower +# threshold is reached +# active-defrag-cycle-min 1 + +# Maximal effort for defrag in CPU percentage, to be used when the upper +# threshold is reached +# active-defrag-cycle-max 25 + +# Maximum number of set/hash/zset/list fields that will be processed from +# the main dictionary scan +# active-defrag-max-scan-fields 1000 + +# Jemalloc background thread for purging will be enabled by default +jemalloc-bg-thread yes + +# It is possible to pin different threads and processes of Redis to specific +# CPUs in your system, in order to maximize the performances of the server. +# This is useful both in order to pin different Redis threads in different +# CPUs, but also in order to make sure that multiple Redis instances running +# in the same host will be pinned to different CPUs. +# +# Normally you can do this using the "taskset" command, however it is also +# possible to this via Redis configuration directly, both in Linux and FreeBSD. +# +# You can pin the server/IO threads, bio threads, aof rewrite child process, and +# the bgsave child process. The syntax to specify the cpu list is the same as +# the taskset command: +# +# Set redis server/io threads to cpu affinity 0,2,4,6: +# server_cpulist 0-7:2 +# +# Set bio threads to cpu affinity 1,3: +# bio_cpulist 1,3 +# +# Set aof rewrite child process to cpu affinity 8,9,10,11: +# aof_rewrite_cpulist 8-11 +# +# Set bgsave child process to cpu affinity 1,10,11 +# bgsave_cpulist 1,10-11 + +# In some cases redis will emit warnings and even refuse to start if it detects +# that the system is in bad state, it is possible to suppress these warnings +# by setting the following config which takes a space delimited list of warnings +# to suppress +# +# ignore-warnings ARM64-COW-BUG